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エラーはスローされませんが、要素が 1 つだけの配列が返されます。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 に答える