注册 登录
编程论坛 ASP技术论坛

Split这个函数怎么用?

中国男孩 发布于 2007-10-14 01:42, 1830 次点击

各位大侠,有问题想请教一下,:
Split这个函数怎么用啊?
我想要用这个函数来控制文本框里不能填写在我所控制之内的内容:
比如:有一页是来提交表单的,另外一页是来处理这个表单的,我想在处理表单这一页来用Split函数来控制表单不能输入(,:][‘><?/-=+_)等之内的字符!否则就弹出一个对话框,比如说:不能输入这些字符!



15 回复
#2
multiple19022007-10-14 08:47

配合Instr之类的函数完成


[CODE]Dim GetText
GetText=Trim(Request("NewQuote"))

Const BannedTexts=", : ] [ ' > < ? / - = +"
Dim BannedText()
BannedText=Split(BannedTexts," ")

Dim i
For i=0 To UBound(BannedText)
If Instr(GetText,BannedText(i))>0 Then
Response.Write "<i>请不要在文本框里输入<b>" & Server.HtmlEncode(BannedText(i)) & "</b>字符,此留言未写入数据库</i>"
'Call CloseConn() ' 关闭数据库连接
Response.End '结束处理和输出
End If
Next 'i[/CODE]

不过既然都是一个字符的话 我更喜欢下面这种方法,不用Split

[CODE]Dim GetText
GetText=Trim(Request("NewQuote"))

Const BannedChars=",:]['><?/-=+"

Dim i
For i=1 To Len(BannedChars)
If Instr(GetText,Mid(BannedChars,i,1))>0 Then
Response.Write "<i>请不要在文本框里输入<b>" & Server.HtmlEncode(Mid(BannedChars,i,1)) & "</b>字符,此留言未写入数据库</i>"
'Call CloseConn() ' 关闭数据库连接
Response.End '结束处理和输出
End If
Next 'i[/CODE]

#3
永夜的极光2007-10-14 19:48
asp的split函数不是太好用,很多情况没考虑好,所以最好不要用,非要用到的话还是自己写一个函数比较安全
#4
multiple19022007-10-14 20:07
以下是引用永夜的极光在2007-10-14 19:48:57的发言:
asp的split函数不是太好用,很多情况没考虑好,所以最好不要用,非要用到的话还是自己写一个函数比较安全

挺好用的啊,不知道你想用split干什么。如果你想要吃汉堡的话,split的确没用,要用RMB。

#5
永夜的极光2007-10-14 20:25

汉堡不好吃,来俩鸡翅好了,谈RMB太伤感情,就免了吧

我以前试过这个split函数,对于完全合理的输入,分解结果那是肯定对的(其实这是废话

但是对一些特殊情况的处理考虑不全面(具体是什么特殊情况我忘记了,以后查查)

总之如果在用split前可以保证字符串完全合理,那可以用,但是如果字符串来自于用户输入,那随时可能出问题。

#6
multiple19022007-10-14 20:31
以下是引用永夜的极光在2007-10-14 20:25:32的发言:

汉堡不好吃,来俩鸡翅好了,谈RMB太伤感情,就免了吧

我以前试过这个split函数,对于完全合理的输入,分解结果那是肯定对的(其实这是废话

但是对一些特殊情况的处理考虑不全面(具体是什么特殊情况我忘记了,以后查查)

总之如果在用split前可以保证字符串完全合理,那可以用,但是如果字符串来自于用户输入,那随时可能出问题。

我还没构造出不合理的情况。但是split的确有局限性,比如如果我要空格也能分隔,逗号也能分隔,可以混合使用,split就没法用了。
当然有一种思路是先把逗号replace成空格,然后执行split(这主意真不错哦)

#7
永夜的极光2007-10-14 21:44


<%
dim s
s=\" a b  c d e \"
response.write(ubound(split(s,\" \")))
%>

split对于多空格的处理就比较有问题

#8
multiple19022007-10-14 21:46
以下是引用永夜的极光在2007-10-14 21:44:27的发言:


<%
dim s
s=\" a b  c d e \"
response.write(ubound(split(s,\" \")))
%>

split对于多空格的处理就比较有问题


<%
dim s
s=\" a b  c d e \"
While Instr(s,\"  \")
    s=replace(s,\"  \",\" \")
Wend

response.write(ubound(split(s,\" \")))
%>

#9
永夜的极光2007-10-14 22:04
能够处理我知道,但是我觉得这个本来应该在split里面自己处理的

话说回来,在我说这个之前,你用split的时候,有没有这么处理一遍呢?
#10
中国男孩2007-10-15 13:54
谢谢各位大侠的讲解,我有一名ASP初学者,以后有什么问题还得请教各位大侠们
#11
hmhz2007-10-15 14:19
<%
Z="a,b c,d,e f g"
X=replace(Z,","," ")
count=len(Z)-len(instr(X," "))

for i=0 to count
response.write split(X," ")(i)
next
%>

[此贴子已经被作者于2007-10-15 14:30:15编辑过]

#12
中国男孩2007-10-15 14:22
回复:(hmhz)

谢谢大侠的讲解

#13
hmhz2007-10-15 14:27

使用7楼 ubound() 比较更有效率

<%
Z="a,b c,d,e f g"
X=replace(Z,","," ")

for i=0 to ubound(split(X," "))
response.write split(X," ")(i)
next
%>

[此贴子已经被作者于2007-10-15 14:29:58编辑过]

#14
中国男孩2007-10-15 14:34
回复:(hmhz)使用7楼 ubound() 比较更有效率

问大哥,你刚用红色标明的是什么意思/

#15
multiple19022007-10-16 18:33
以下是引用永夜的极光在2007-10-14 22:04:05的发言:
能够处理我知道,但是我觉得这个本来应该在split里面自己处理的

话说回来,在我说这个之前,你用split的时候,有没有这么处理一遍呢?

没考虑到过,但我觉得最好放给程序员来处理。

#16
yeshirow2007-10-17 07:11
回复:(中国男孩)Split这个函数怎么用?
lz 可以參照一下 RegExp 的使用
1