拆解含有分隔符號的字串


阿瑟 發表



如果您有使用過多選項(如勾選方塊)的表單與ASP的運用的話. 你會發現表單會將多個選項的值用逗號分隔傳至目的ASP. 這隻程式會告訴您如何把這串綜合字串分解成陣列.

語法範例:

inputstring = "hello,hey,hi" '設定目標字串
sepsymbol = "," '設定分隔符號

x=0


while len(inputstring)<>Empty
t=InStrRev(inputstring,sepsymbol)
if t=0 then

ReDim Preserve outputstring(x)
outputstring(x)=trim(inputstring)
inputstring=Empty

else

ReDim Preserve outputstring(x)
outputstring(x)=trim(right(inputstring,len(inputstring)-t))
inputstring=replace(left(inputstring,t-1),outputstring(x),Empty)

end if

x=x+1
Wend


其實您只要把上面inputstring = ""的部分改一下 , 然後把整段語法複製到你的程式裡面即可.
小弟大概講解一下這隻程式的原理:
outputstring() 是一隻動態陣列 (即不知到底要多少個數值的陣列)
然後我們利用loop和InStrRev()函式來分解字串. InStrRev會找出inputstring字串最後的一個逗號(分隔符號) 然後將這個逗號後的內容編到陣列裡面去, 之後再把取過的部分移除掉. 用loop重複此動作直到所有的內容都被分開存入陣列裡.

如果你光放這隻程式, 是不會有任何的輸出的...
這組程式只會產生一組outputstring()陣列..看你如何去運用了. 由於你不清楚這組陣列有多大 (如果你使用表單的話你不知道使用者到底選了幾個選項), 你必須用UBound(outputstring)來取得outputstring()陣列的最後一組陣列的編號 (從0開始算), 當然 LBound(outputstring)就可以取得該陣列最小的編號 (通常是0). 得到這組陣列, 你就可以應用在程式裡面...請往下看...

這隻程式的應用:
一開始小弟寫這隻程式一開始想到的是檔案管理介面. 如果要別人一個一個檔案去刪除不是很累嗎?
小弟一開始先建立一個檔案清單, 然後每一個檔案旁邊都放一個checkbox (勾選方塊), 當表單傳送到ASP去的時候, 所有要刪除的檔名會以逗號分隔, 如 bar.gif,flag.gif.
因此小弟用這隻程式將所有的檔名分開, 然後一個一個加以刪除(用一個從LBound跑到UBound的loop來刪除所有陣列中指定檔名的檔案).
另外一個應用就是做搜尋引擎, 用過Yahoo的人都知道你可以用逗號分隔所有的搜尋字...
小弟就是用這隻程式在搜尋引擎上加上了這個功能...你可以打入多個搜尋字, 這樣找到的資料命中率就很高了.

小弟相信還有很多應用, 您可以再想想看喔...:P

最後更新日期: 10/19/2002 5:32:14 PM