VB.net:mid函数出错

时间:2016-05-13 14:13:28

标签: 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

3 个答案:

答案 0 :(得分:1)

使用正则表达式尝试:

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

答案 1 :(得分:1)

我看到了代码的问题。这是一个简单的修复。只需更改所有“&lt;”到“&lt; =”和所有“&gt;”到“&gt; =”没有引号。

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

希望这有帮助!

答案 2 :(得分:0)

如何使用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));