之前..朋友在寫檔案搜尋..(透過.txt的檔案列表)
..看他寫了粉久..
小弟也自己下海...寫了一個(可以使用萬用字元*號和?號)..
能儘量做的就參照Windows的Ctrl+F的方式..
基本做法如下..
判斷檔名/搜尋字串是否有不合法字元,Ex: /號,\號..etc
檔名及搜尋字串轉換成相同大小寫
先將檔名拆成主檔名跟副檔名兩種..
搜尋字串也拆成主搜尋字串跟副搜尋字串兩種..
主搜尋字串對應主檔名;副搜尋字串對應副檔名
先檢查搜尋字串是否有*號跟?號是否共存...共存則錯誤!
如果搜尋字串有*號,且搜尋字串長度大於檔名則錯誤!
如果搜尋字串有*號共連,如:**,則當成*
將*號補成?號,
Ex1:A*. VS ABC. convert to A??. VS ABC. (True)
Ex2:A* VS ABC. convert to A??? VS ABC. (True)
Ex3:*A VS ABC. convert to ???A VS ABC. (False)
在將字串的字元依序比對..
?號則直接進行下一字元比對..
以下是測試結果:
FileName Ex:'TEST.TEST.TEST'
Begin:
1.When Keyword is '???????????.TEST' will return True!!(Right) //主檔名問號測試
2.When Keyword is '????????????.TEST' will return True!!(Right) //主檔名問號測試,長度+1
3.When Keyword is 'TEST.tESt.?????' will return True!!(Right) //副檔名問號測試,主檔名大小寫測試
4.When Keyword is 'TEST.TEST.??????' will return True!!(Right) //副檔名問號測試,長度+1
5.When Keyword is '???????????.?????' will return True!!(Right) //檔名問號測試
// 星號測試
6.When Keyword is '*.TEST' will return True!!(Right)
7.When Keyword is 'TEST.*' will return True!!(Right)
8.When Keyword is '*.*' will return True!!(Right)
// 星號測試 end
Advance:
9.When Keyword is 'TEST*.*' will return True!!(Right)
10.When Keyword is 'TEST.TEST*.*' will return True!!(Right)
Wrong:
//這裡有問題
11.When Keyword has multi-wildchar like '*.*.*' will return false!!(Wrong)
這是小弟的一些心得...
請各位指教:)
thx
..看他寫了粉久..
小弟也自己下海...寫了一個(可以使用萬用字元*號和?號)..
能儘量做的就參照Windows的Ctrl+F的方式..
基本做法如下..
判斷檔名/搜尋字串是否有不合法字元,Ex: /號,\號..etc
檔名及搜尋字串轉換成相同大小寫
先將檔名拆成主檔名跟副檔名兩種..
搜尋字串也拆成主搜尋字串跟副搜尋字串兩種..
主搜尋字串對應主檔名;副搜尋字串對應副檔名
先檢查搜尋字串是否有*號跟?號是否共存...共存則錯誤!
如果搜尋字串有*號,且搜尋字串長度大於檔名則錯誤!
如果搜尋字串有*號共連,如:**,則當成*
將*號補成?號,
Ex1:A*. VS ABC. convert to A??. VS ABC. (True)
Ex2:A* VS ABC. convert to A??? VS ABC. (True)
Ex3:*A VS ABC. convert to ???A VS ABC. (False)
在將字串的字元依序比對..
?號則直接進行下一字元比對..
以下是測試結果:
FileName Ex:'TEST.TEST.TEST'
Begin:
1.When Keyword is '???????????.TEST' will return True!!(Right) //主檔名問號測試
2.When Keyword is '????????????.TEST' will return True!!(Right) //主檔名問號測試,長度+1
3.When Keyword is 'TEST.tESt.?????' will return True!!(Right) //副檔名問號測試,主檔名大小寫測試
4.When Keyword is 'TEST.TEST.??????' will return True!!(Right) //副檔名問號測試,長度+1
5.When Keyword is '???????????.?????' will return True!!(Right) //檔名問號測試
// 星號測試
6.When Keyword is '*.TEST' will return True!!(Right)
7.When Keyword is 'TEST.*' will return True!!(Right)
8.When Keyword is '*.*' will return True!!(Right)
// 星號測試 end
Advance:
9.When Keyword is 'TEST*.*' will return True!!(Right)
10.When Keyword is 'TEST.TEST*.*' will return True!!(Right)
Wrong:
//這裡有問題
11.When Keyword has multi-wildchar like '*.*.*' will return false!!(Wrong)
這是小弟的一些心得...
請各位指教:)
thx
全站熱搜
留言列表