VB.net:中间函数出错



我正在制作一个程序,该程序只接受像Hal456这样的格式的用户ID,第一个是大写的,接下来是两个小写的,最后是三个数字。

我试着一步一步地完成这个程序,但在第二个IF语句时失败了。

Sub Main()
    Dim userid As String
    Dim flag As Boolean
    flag = False
    Console.WriteLine("Input userID to check format")
    userid = "Hal123"
    Dim a, b, c, d, e, f As Integer
    a = Asc("a")
    b = Asc("z")
    c = Asc("A")
    d = Asc("Z")
    e = Asc("0")
    f = Asc("9")

    If Len(userid) = 6 Then
        If Asc(Left(userid, 1)) > c And Asc(Left(userid, 1)) < d Then
            If Asc(Mid(userid, 2, 1)) > a And Asc(Mid(userid, 2, 1)) < b Then
                If Asc(Mid(userid, 3, 1)) > a And Asc(Mid(userid, 3, 1)) < b Then
                    If Asc(Mid(userid, 4, 1)) > e And Asc(Mid(userid, 4, 1)) < f Then
                        If Asc(Mid(userid, 5, 1)) > e And Asc(Mid(userid, 5, 1)) < f Then
                            If Asc(Mid(userid, 6, 1)) > e And Asc(Mid(userid, 6, 1)) < f Then
                                flag = True
                                Console.WriteLine("Format of userID is correct")
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If
    If flag = False Then Console.WriteLine("Format is not correct")
    Console.ReadLine()
End Sub

我看到了代码的问题。这是一个简单的解决方案。只需将所有"<"更改为"<=",将所有">"更改为不带引号的">="即可。

原因:您的程序将不允许"a"one_answers"z"以及"0"one_answers"9"成为用户ID的一部分。将其更改为大于或等于可以解决此问题。

希望这能有所帮助!

使用正则表达式试试这个:

Sub Main()
    Dim userid As String
    Dim flag As Boolean
    Console.WriteLine("Input userID to check format")
    userid = "Hal123"
    flag = CheckUserID(userid)
    If flag = False Then Console.WriteLine("Format is not correct")
    Console.ReadLine()
End Sub
Private Function CheckUserID(userId As String) As Boolean
    Dim regex As Regex = New Regex("([A-Z]){1}([a-z]){2}([0-9]){3}")
    Dim match As Match = regex.Match(userId)
    Return match.Success
End Function

使用REGEXP解决这个问题怎么样?我认为这应该是直截了当的。

类似于:

        string pattern = @"[A-Z][a-z]{2}d{3}";
        Regex rx = new Regex(pattern);
        string uid = "";
        do
        {
            Console.WriteLine("Please insert userID:");
            uid = Console.ReadLine();
            bool check = rx.IsMatch(uid);
        } while (!rx.IsMatch(uid));

最新更新