之前..朋友在寫檔案搜尋..(透過.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



arrow
arrow
    全站熱搜

    vbqa 發表在 痞客邦 留言(8) 人氣()