看板 C_Sharp 關於我們 聯絡資訊
假設有數個檔案,要如何透過模糊比對取得檔案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
leicheong: 把字串中的數字換成N其他轉成T, "."看你要不要換, 12/18 00:10
leicheong: 然後直接比較不行嗎? 12/18 00:10
leicheong: 另外401DF那個看不懂為什麼會fail. 12/18 00:11
leicheong: 要保證是01到10的話在檢查IsDigit時偷看下一個數字即可 12/18 00:14
leicheong: 感覺當成2維的char array比較易處理. 12/18 00:16
autumn10109: 905 ok但401 fail 12/18 09:24
autumn10109: 是還有其他規則嗎? 12/18 09:25
Ammenze: 第三段應該是說3個檔案有一個抓不出正確規則的數字就整 12/18 13:24
Ammenze: 個3檔案都算fail吧 12/18 13:25
樓上前輩說對了,以範例三而言,假設在同一個位置,有其中一個檔案無法取出Index 則就判斷Fail,因為也無法證明其他兩個的順序是否正確... ※ 編輯: don750421 (220.142.142.51), 12/18/2015 22:37:31
Litfal: 這沒很難啊?跑兩層迴圈不就好了? 12/18 23:24
don750421: 兩層迴圈?每個資料內的檔案index也有可能出現在第1、2 12/19 10:23
don750421: 碼 12/19 10:23
autumn10109: 所以是index位置根本不固定?但每次所有檔名的index 12/19 11:41
autumn10109: 必須在同個位置才ok 12/19 11:42
Litfal: 第一層當然是跑所有檔案檔名,第二層看你是要用字串解析還 12/19 13:55
Litfal: 是REGEX,分析出檔名內有幾個部位符合\d{2},例如ABC102就 12/19 14:02
Litfal: 解析成list of <index,value> = {{3,10},{4,2}} 12/19 14:03
Litfal: 再取所有FILE的某index都有值的,就是結果。 12/19 14:05
Litfal: 當然可以在過程中優化減少運算量 12/19 14:06
Litfal: PS.我的index是指數字在檔名中的位置,跟你的INDEX不同 12/19 14:07