作者don750421 (1+1≠2)
看板C_Sharp
標題[問題] 有辦法模糊比對取得檔案INDEX嗎?
時間Thu Dec 17 23:43:45 2015
假設有數個檔案,要如何透過模糊比對取得檔案INDEX?
當然,一定會有以下保證規則:
1. 檔名長度一定相同
2. 檔案INDEX一定為兩碼數字
3. 檔案INDEX的位置一定相同
4. 檔案INDEX一定介於01~10
範例一:假設資料夾內有以下檔案
ABCAB01.txt ==> 01
ABCAC02.txt ==> 02
ABCAD05.txt ==> 05
範例二:假設資料夾內有以下檔案
ABCA401DF.txt ==> 01
ABCA802FV.txt ==> 02
ABCA905EF.txt ==> 05
範例三:假設資料夾內有以下檔案
ABCA401DF.txt ==> 01 這種就算是FAIL,
ABCA8G2FV.txt ==> ?? 因為只要其中一個無法取出。
ABCA905EF.txt ==> 05 則其他取出的就無參考意義
範例四:假設資料夾內有以下檔案
ABCA401DF.txt ==> 01 這種就算是FAIL,
ABCA824FV.txt ==> 24 因為上面一定有保證,檔案Index介於01~10,
ABCA905EF.txt ==> 05 則其他取出的就無參考意義
有想過或許正規表示法有辦法取得,但是要如何抓取到第N個字元的位置...
好像又是另一個問題@@...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.52.150
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1450367028.A.936.html
1F:推 leicheong: 把字串中的數字換成N其他轉成T, "."看你要不要換, 12/18 00:10
2F:→ leicheong: 然後直接比較不行嗎? 12/18 00:10
3F:→ leicheong: 另外401DF那個看不懂為什麼會fail. 12/18 00:11
4F:→ leicheong: 要保證是01到10的話在檢查IsDigit時偷看下一個數字即可 12/18 00:14
5F:→ leicheong: 感覺當成2維的char array比較易處理. 12/18 00:16
6F:推 autumn10109: 905 ok但401 fail 12/18 09:24
7F:→ autumn10109: 是還有其他規則嗎? 12/18 09:25
8F:推 Ammenze: 第三段應該是說3個檔案有一個抓不出正確規則的數字就整 12/18 13:24
9F:→ Ammenze: 個3檔案都算fail吧 12/18 13:25
樓上前輩說對了,以範例三而言,假設在同一個位置,有其中一個檔案無法取出Index
則就判斷Fail,因為也無法證明其他兩個的順序是否正確...
※ 編輯: don750421 (220.142.142.51), 12/18/2015 22:37:31
10F:→ Litfal: 這沒很難啊?跑兩層迴圈不就好了? 12/18 23:24
11F:→ don750421: 兩層迴圈?每個資料內的檔案index也有可能出現在第1、2 12/19 10:23
12F:→ don750421: 碼 12/19 10:23
13F:→ autumn10109: 所以是index位置根本不固定?但每次所有檔名的index 12/19 11:41
14F:→ autumn10109: 必須在同個位置才ok 12/19 11:42
15F:→ Litfal: 第一層當然是跑所有檔案檔名,第二層看你是要用字串解析還 12/19 13:55
16F:→ Litfal: 是REGEX,分析出檔名內有幾個部位符合\d{2},例如ABC102就 12/19 14:02
17F:→ Litfal: 解析成list of <index,value> = {{3,10},{4,2}} 12/19 14:03
18F:→ Litfal: 再取所有FILE的某index都有值的,就是結果。 12/19 14:05
19F:→ Litfal: 當然可以在過程中優化減少運算量 12/19 14:06
20F:→ Litfal: PS.我的index是指數字在檔名中的位置,跟你的INDEX不同 12/19 14:07