ASP If语句如果Split()为空,因为我的Subscript超出范围:'[number:1]'

时间:2012-11-15 17:08:14

标签: asp-classic outofrangeexception

我有一个表单字段,要求"全名"当用户注册时我想然后将该字符串拆分为名字,然后是姓氏。我可以使用以下代码:

<%
If Request.Form("user[username]") <> "" Then
     NameStr = Request.Form("user[username]")
     Dim WordArray
     WordArray = Split(NameStr, " ")
End If
%>

然后,我可以将变量拆分为我的表单:

value="<%=WordArray(0)%>"
value="<%=WordArray(1)%>"

但是,如果用户只是将他们的名字放入我的错误中,因为Split正在寻找单词之间的空格以正确执行操作。我试过了:

<%
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
%>

现在我知道这会失败,因为它永远不会是空白但是有没有办法看看如果只有一个名字而没有姓氏,拆分是否会出错?我已经看过验证表单字段但看不到确保它们之间有空格的方法。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

Split不是问题。如果字符串中没有空格,Split将不会抛出错误,但会返回只包含一个元素的数组。您应该做的是使用WordArray函数检查UBound的上限:

Dim WordArray, firstName, lastName
WordArray = Split(NameStr, " ")

firstName = WordArray(0)
If UBound(WordArray) >= 1 Then
    lastName = WordArray(1)
Else
    lastName = ""
End If

答案 1 :(得分:-1)

这不是一个真正的修复,但我管理了一些“老派”VBA技术,它至少陷入了错误:

<%
If Request.Form("user[username]") <> "" Then
    NameStr = Request.Form("user[username]")
    Dim WordArray
        WordArray = Split(NameStr, " ")
        On Error Resume Next
End If
%>

On Error Resume Next只是忽略错误并继续前进。脏(就像ASP一样,但它有效!)。