动机:
经典论坛里有个朋友问“一串字符,逗号格开,分开做链接,VBS有这种函数吗?”他想解决的是:“一串字符,逗号格开,分开做链接。比如:论坛首页里‘Fly, mjking, stchin, vvjohn, 不太清醒, 苛子, 车仔’每个名字都是一个链接。”
这就需要从输入的变量中读取数据,根据数据项用split函数将其分开,转化为一个数组进行处理,并用trim函数去掉数据前后空格。这样可以轻松的提取自己需要的数值了。
这里我用到了正则表达式中的Split 函数。
Split 函数
将字符串依指定的规则切开。
语法: array split(string pattern, string string, int [limit]);
返回值: 数组
函数种类: 资料处理
内容说明
本函数可将字符串依指定的规则分开。切开后的返回值为数组变量。
参数 pattern 为指定的规则字符串、参数 string 则为待处理的字符串、参数 limit 可省略,表示欲处理的最多合乎值。
值得注意的是本函数的 pattern 参数有区分大小写。。
材料:
表单域 (form1)
文本框 (text1,text2)
显示层 (Layer1)
确定键 (Command1)
效果:
浏览这里
代码:
自定义函数:txtSplit (将输入框中的多个变量分离开来,并显示在列表项,在层中显示每个变量的链接)
<SCRIPT LANGUAGE="VBScript">
<!--
Sub txtSplit()
form1.Text1.value = Replace(form1.Text1.value, " ", "") '清除字串中的空格
If form1.Text1.value <> "" Then
'MsgBox "yes"
'Dim vArr As Variant
'Dim astr(10) As String
'vArr = astr
vArr = Split(form1.Text1.value, ",")
form1.Text2.value = "分离变量列表 "+ vbCrLf + "-------------"+ vbCrLf
Layer1.innerHtml = "<br> 变量链接列表<br> -------------<br>"
For i = LBound(vArr) To UBound(vArr)
If (vArr(i) <> "") Then
form1.Text2.value = form1.Text2.value + vArr(i)
If (i < UBound(vArr)) Then
form1.Text2.value = form1.Text2.value + vbCrLf
End If
Layer1.innerHtml= Layer1.innerHtml+" <A target='_blank' HREF=http://www.blueidea.com/bbs/viewuser.asp?username="+vArr(i)+">"+vArr(i)+"</A><br>"
End If
Next
Else
MsgBox "请输入变量。"
End If
End Sub
//-->
</SCRIPT>
表单源码
<form name="form1" >
请输入变量: (变量之间用“,”隔开)
<input type="text" name="text1" style="width:360" value="Fly, mjking, stchin, vvjohn, 不太清醒, 苛子, 车仔 ">
<input type="button" name="Command1" value="分离" onClick="txtSplit()">
<textarea name="text2" rows="9" cols="15" readonly></textarea>
<div id="Layer1" style=" width:160px; height:148px; background-color: #F0F7FF; layer-background-color: #F0F7FF; border: 1px none #000000; clip: rect(10 10 10 10)" align="left">
</div>
</form>