[問題] 有辦法模糊比對取得檔案INDEX嗎?

看板C_Sharp (C#)作者 (1+1≠2)時間9年前 (2015/12/17 23:43), 9年前編輯推噓3(3017)
留言20則, 5人參與, 最新討論串1/1
假設有數個檔案,要如何透過模糊比對取得檔案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://www.ptt.cc/bbs/C_Sharp/M.1450367028.A.936.html

12/18 00:10, , 1F
把字串中的數字換成N其他轉成T, "."看你要不要換,
12/18 00:10, 1F

12/18 00:10, , 2F
然後直接比較不行嗎?
12/18 00:10, 2F

12/18 00:11, , 3F
另外401DF那個看不懂為什麼會fail.
12/18 00:11, 3F

12/18 00:14, , 4F
要保證是01到10的話在檢查IsDigit時偷看下一個數字即可
12/18 00:14, 4F

12/18 00:16, , 5F
感覺當成2維的char array比較易處理.
12/18 00:16, 5F

12/18 09:24, , 6F
905 ok但401 fail
12/18 09:24, 6F

12/18 09:25, , 7F
是還有其他規則嗎?
12/18 09:25, 7F

12/18 13:24, , 8F
第三段應該是說3個檔案有一個抓不出正確規則的數字就整
12/18 13:24, 8F

12/18 13:25, , 9F
個3檔案都算fail吧
12/18 13:25, 9F
樓上前輩說對了,以範例三而言,假設在同一個位置,有其中一個檔案無法取出Index 則就判斷Fail,因為也無法證明其他兩個的順序是否正確... ※ 編輯: don750421 (220.142.142.51), 12/18/2015 22:37:31

12/18 23:24, , 10F
這沒很難啊?跑兩層迴圈不就好了?
12/18 23:24, 10F

12/19 10:23, , 11F
兩層迴圈?每個資料內的檔案index也有可能出現在第1、2
12/19 10:23, 11F

12/19 10:23, , 12F
12/19 10:23, 12F

12/19 11:41, , 13F
所以是index位置根本不固定?但每次所有檔名的index
12/19 11:41, 13F

12/19 11:42, , 14F
必須在同個位置才ok
12/19 11:42, 14F

12/19 13:55, , 15F
第一層當然是跑所有檔案檔名,第二層看你是要用字串解析還
12/19 13:55, 15F

12/19 14:02, , 16F
是REGEX,分析出檔名內有幾個部位符合\d{2},例如ABC102就
12/19 14:02, 16F

12/19 14:03, , 17F
解析成list of <index,value> = {{3,10},{4,2}}
12/19 14:03, 17F

12/19 14:05, , 18F
再取所有FILE的某index都有值的,就是結果。
12/19 14:05, 18F

12/19 14:06, , 19F
當然可以在過程中優化減少運算量
12/19 14:06, 19F

12/19 14:07, , 20F
PS.我的index是指數字在檔名中的位置,跟你的INDEX不同
12/19 14:07, 20F
文章代碼(AID): #1MSjWqas (C_Sharp)
文章代碼(AID): #1MSjWqas (C_Sharp)