[ ASP的Split用于拆分字串为数据 ]
以下是引用片段:
dim str str="游戏,音乐,下载,时尚" str=split(str,",") ' 以,为拆分关键字
通过split以后
str(0) = "游戏" str(1) = "音乐" str(2) = "下载" str(3) = "时尚" 可以通过for ... next 循环出来的 dim i for i = 0 to ubound(str) response.write str(i) next
在这里 ubound(str)可以得出str这个数组的维数
应用中的例子:
在很多系统开发中,我们必须对数据库的设计尽量简化,尤其是字段过多的情况下。
可能有些朋友在设计字段时采用text型[以AC为例],而非memo。尤其储存一些重复或类似出现的数据时,觉得建立多个字段颇为麻烦。有没有觉得split能帮我们个忙呢,让我们的数据库尽量简化?相信用过DVBBS的朋友一定有所了解,在7.0版本之前的DVBBS数据库中的表config多数字段的储存是采用数组存储……如果有此想法的话,请看下面我对例子的解释,相信您也可以做到这一点。
我先介绍一下Split函数的用法: 返回值数组 = Split("字符串","分割符") 1、 假设变量strURL保存着URL值,如strURL = "ftp://username:password@server",这是我们在IE中登录到FTP上时的URL形式,如果我们想把其中的username和password取出来的话,该怎么办呢?当然解决的方法有许多,在这里我们只介绍用Split来解决的方法。首先,我们找出分割符。我们发现在这个字符串中,username和password之间有个冒号把它们隔开了,所以我们就把这个冒号作为Split函数的"分割符"来分割整个字符串,最后达到取username和password的目的。代码如下: strURL = "ftp://username:password@server" aryReturn = Split(strURL,":")
这样我们就把字符串用冒号分割开了,分割后的结果保存在aryReturn中(aryReturn是一个数组)。
下面我们就来看看这个最终的结果吧,因为Split函数最终返回的是一个数组,所以我们主要就是显示数组中的元素了,就要涉及到一些跟数组有关的函数:IsArray()判断是否数组的函数,LBound()取数组的下标,UBound()取数组的上标。
Response.Write("返回值是否为数组:" & IsArray(aryReturn) & "") For i = LBound(aryReturn) To UBound(aryReturn) Response.Write("返回值数组中的元素[" & i & "]:" & Right(aryReturn(i),Len(aryReturn(i))-2) & "") Next
通过上面的代码,我们看到字符串被分割成三个部分,
即:"ftp"、"//username"、"password@server"。我们要取username和password需要进一步的处理,我就不多说了,直接给出代码。 取username的代码: strUsername = Right(aryReturn(1),Len(aryReturn(1))-2)
取password的代码: '取password我们又用到Split函数了,不过这回的分割符是"@" aryTemp = Split(aryReturn(2),"@") strPassword = aryTemp(0) '我们可以顺便取出server strServer = aryTemp(1)
分割符可以是一个字符,也可以是一个字符串。如: aryReturn = Split("ftp://username:password@server,"//' target="_blank">ftp://username:password@server,"//")
2、OKAY!到这里我们对split函数已经有所了解了。我们进行下一个实例:
现有数据库link.mdb 表link 字段:link、linkhref 均为文本类型 Set conn = Server.CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("link.mdb") Sql = "select * from link" set rs=conn.execute(Sql) link=split(rs("link"),"|") linkhref=split(rs("linkhref"),"|")
rs.close set rs=nothing conn.close set conn=nothing
通过上面代码,我们连接了数据库,打开并将其关闭。
'取出储存的数据时我们又用到Split函数了,不过这回的分割符是"|" link=split(rs("link"),"|") linkhref=split(rs("linkhref"),"|")
'假如最初数据库中link字段我们设置储存了“1|2|3|4|5” ,linkhref字段存储了“1_1|2_2|3_3|4_4|5_5”
'不难看出数组link、linkhref的下标均为“4”
在我们进行数据更新时,表单value值我们分别取:link(0)、link(1)、link(2)、link(3)、link(4)及linkhref(0)、linkhref(1)、linkhref(2)、linkhref(3)、linkhref(4)
如下代码: link_1=request.Form("link(0)") & "|" & request.Form("link(1)") & "|" & request.Form("link(2)") & "|" &request.Form("link(3)") & "|" & request.Form("link(4)")
linkhref_1=request.Form("linkhref(0)") & "|" & request.Form("linkhref(1)") & "|" & request.Form("linkhref(2)") & "|" & request.Form("linkhref(3)") & "|" & request.Form("linkhref(4)")
sql_link="update link set link='"&link_1&"',linkhref='"&linkhref_1&"'" conn.execute(sql_link)
通过上面代码,我们对数据进行了更新数据link、linkhref link_1、linkhref_1是获取各表单值
好了,相信朋友们看完后就觉得实现这个过程实在太简单!
注意: 1.一般来说,asp中可以不声明变量,使用Split函数时,如果要声明返回值的变量的话,只能用Dim,而不能用Redim。虽然说其返回是一个数组,应该是用Redim也可以,但在实际使用过程中是不行。不知是怎么回事? 2. 如果用Split函数来分割一个字符串中并不存在的分割符时,将返回整个字符串,其结果是只有一个元素的数组。
后话,对于要取一字符串中的某些字符或部分,只要抓住规律,再加上用split就可以很好做成各种效果。写此文,希望对大家的学习有所帮助,同时也希望各路高手能够指点一二! |