Re: [問題] 以字串中的數字而非字串來排序?
※ 引述《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)
推
10/19 01:17, , 1F
10/19 01:17, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):