作者adrianshum (Alien)
看板Programming
标题Re: [问题] 以字串中的数字而非字串来排序?
时间Wed Oct 17 13:09:24 2007
※ 引述《WayneChu (台北人在洛城)》之铭言:
: 比如说,我有一串档名:
: 1.jpg 2.jpg .... 11.jpg 12.jpg
: 在视窗的资料夹中就会以
: 1.jpg 2.jpg .... 11.jpg 12.jpg 排列
: 但是用字串排序就会变成
: 1.jpg 11.jpg 12.jpg ... 2.jpg
: 要是事前完全不知道会遇到怎样的档名
: 要如何让程式分析出档名中的数字来排列?
你所谓事前完全不知道会遇到怎样的档名,
是甚至想 myfile1.txt, myfile11.txt, myfile2.txt
也能正确排序?
要是里面有多组数字呢?
大略的想法是写一个 comparator, 把档名以
分成数字及非数字段, 要逐一 compare
e.g.
myfile1.jpg
myfile2.jpg
xxx1yyy2.jpg
9xyz.jpg
分成
"myfile" "1" ".jpg"
"myfile" "2" ".jpg"
"xxx" "1" "yyy" "2" ".jpg"
"" "9" "xyz.jpg"
要比较, 就逐段比较, e.g. myfile1.jpg myfile2.jpg
第一段 myfile vs myfile, 一样, 所以 compare 第二段
1 vs 2 . 每逢偶数段就转成 integer compare
前者较小, 所以return 说前者较小就行了
其他同理. empty string, 不同字段长度之类就自己想想, 该不会太难
Alien
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.22.246.26
※ 编辑: adrianshum 来自: 202.22.246.26 (10/17 13:12)
※ 编辑: adrianshum 来自: 202.22.246.26 (10/17 13:13)
1F:推 WayneChu:好方法,多谢了 66.218.62.105 10/19 01:17