大家有碰到過(guò)要想取一字符串里的某些值而無(wú)從下手?有沒(méi)有覺(jué)得看書(shū)或教材對(duì)split的寫(xiě)法糊里糊涂……如果有此疑問(wèn)的話,請(qǐng)看下面我對(duì)例子的解釋?zhuān)嘈拍鷷?huì)對(duì)這個(gè)有一定的了解。
我先介紹一下Split函數(shù)的用法: 返回值數(shù)組 = Split("字符串","分割符")
假設(shè)變量strURL保存著URL值,如strURL = "ftp://username:password@server",這是我們?cè)冢桑胖械卿浀紽TP上時(shí)的URL形式,如果我們想把其中的username和password取出來(lái)的話,該怎么辦呢?當(dāng)然解決的方法有許多,在這里我們只介紹用Split來(lái)解決的方法。首先,我們找出分割符。我們發(fā)現(xiàn)在這個(gè)字符串中,username和password之間有個(gè)冒號(hào)把它們隔開(kāi)了,所以我們就把這個(gè)冒號(hào)作為Split函數(shù)的"分割符"來(lái)分割整個(gè)字符串,最后達(dá)到取username和password的目的。代碼如下: strURL = "ftp://username:password@server" aryReturn = Split(strURL,":")
這樣我們就把字符串用冒號(hào)分割開(kāi)了,分割后的結(jié)果保存在aryReturn中(aryReturn是一個(gè)數(shù)組)。
下面我們就來(lái)看看這個(gè)最終的結(jié)果吧,因?yàn)镾plit函數(shù)最終返回的是一個(gè)數(shù)組,所以我們主要就是顯示數(shù)組中的元素了,就要涉及到一些跟數(shù)組有關(guān)的函數(shù):IsArray()判斷是否數(shù)組的函數(shù),LBound()取數(shù)組的下標(biāo),UBound()取數(shù)組的上標(biāo)。
Response.Write("返回值是否為數(shù)組:" & IsArray(aryReturn) & "<br>") For i = LBound(aryReturn) To UBound(aryReturn) Response.Write("返回值數(shù)組中的元素[" & i & "]:" & Right(aryReturn(i),Len(aryReturn(i))-2) & "<br>") Next
通過(guò)上面的代碼,我們看到字符串被分割成三個(gè)部分,即:"ftp"、"http://username"、"password@server"。我們要取username和password需要進(jìn)一步的處理,我就不多說(shuō)了,直接給出代碼。 取username的代碼: strUsername = Right(aryReturn(1),Len(aryReturn(1))-2) 取password的代碼:
'取password我們又用到Split函數(shù)了,不過(guò)這回的分割符是"@" aryTemp = Split(aryReturn(2),"@") strPassword = aryTemp(0) '我們可以順便取出server strServer = aryTemp(1)
分割符可以是一個(gè)字符,也可以是一個(gè)字符串。如: aryReturn = Split("ftp://username:password@server,"http://")
注意: 1.一般來(lái)說(shuō),ASP中可以不聲明變量,使用Split函數(shù)時(shí),如果要聲明返回值的變量的話,只能用Dim,而不能用Redim。雖然說(shuō)其返回是一個(gè)數(shù)組,應(yīng)該是用Redim也可以,但在實(shí)際使用過(guò)程中是不行。不知是怎么回事? 2. 如果用Split函數(shù)來(lái)分割一個(gè)字符串中并不存在的分割符時(shí),將返回整個(gè)字符串,其結(jié)果是只有一個(gè)元素的數(shù)組。
后話,對(duì)于要取一字符串中的某些字符或部分,只要抓住規(guī)律,再加上用split就可以很好做成各種效果。寫(xiě)此文,希望對(duì)大家的學(xué)習(xí)有所幫助,同時(shí)也希望各路高手能夠指點(diǎn)一二!
出處:藍(lán)色理想
責(zé)任編輯:cjj
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|