Asp classic ASP If语句If Split()在下标超出范围时为空:';[编号:1]';
我有一个表单字段,在用户注册时要求输入“全名”。然后我想把这个字符串分成名字和姓氏。我可以使用以下代码来实现这一点:Asp classic ASP If语句If Split()在下标超出范围时为空:';[编号:1]';,asp-classic,outofrangeexception,Asp Classic,Outofrangeexception,我有一个表单字段,在用户注册时要求输入“全名”。然后我想把这个字符串分成名字和姓氏。我可以使用以下代码来实现这一点: <% If Request.Form("user[username]") <> "" Then NameStr = Request.Form("user[username]") Dim WordArray WordArray = Split(NameStr, " ") End If %> 然后,我可以使用以下方法将变量拆
<%
If Request.Form("user[username]") <> "" Then
NameStr = Request.Form("user[username]")
Dim WordArray
WordArray = Split(NameStr, " ")
End If
%>
然后,我可以使用以下方法将变量拆分为我的形式:
value="<%=WordArray(0)%>"
value="<%=WordArray(1)%>"
value=“”
value=“”
然而,如果用户只是把他们的名字放进我会得到一个错误,因为拆分是在单词之间寻找一个空格来正确执行操作。我试过:
<%
If Request.Form("user[username]") <> "" Then
NameStr = Request.Form("user[username]")
Dim WordArray
If NameStr = "" Then
WordArray = Split(NameStr, "")
Else
WordArray = Split(NameStr, " ")
End If
End If
%>
现在我知道这会失败,因为它永远不会是空的,但是如果只有一个名字而没有姓氏,有没有办法看看拆分是否会出错?我已经查看了表单字段的验证,但看不到确保表单字段之间有空格的方法
有什么想法吗?这不是一个真正的解决方案,但我掌握了一些“老派”的VBA技术,它至少捕获了错误:
<%
If Request.Form("user[username]") <> "" Then
NameStr = Request.Form("user[username]")
Dim WordArray
WordArray = Split(NameStr, " ")
On Error Resume Next
End If
%>
“错误恢复下一步”只会忽略错误并继续。脏(就像ASP一样,但它可以工作!)。
拆分并不是问题所在。如果字符串中没有空格,Split
不会抛出错误,而是返回一个只有一个元素的数组。您应该使用UBound
功能检查WordArray
的上限:
Dim WordArray, firstName, lastName
WordArray = Split(NameStr, " ")
firstName = WordArray(0)
If UBound(WordArray) >= 1 Then
lastName = WordArray(1)
Else
lastName = ""
End If
完美的谢谢我昨天按照我自己的答案设法让它工作,但我认为你的解决方案更好。