2

我有一个表单字段,在用户注册时要求输入“全名”。然后我想将该字符串拆分为名字,然后是姓氏。我可以使用以下代码来实现它:

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

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

有任何想法吗?

4

2 回答 2

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
于 2012-11-16T07:26:56.267 回答
-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 一样,但它有效!)。

于 2012-11-15T17:41:11.407 回答