我写了一个程序来检查输入ID的格式,如果格式不正确,我打印“无效”。
格式为:“Dog123”。第一个字母是大写的第二个小写和第三个数字。
我在Visual Basic 2010上写了一篇简短的文章,只是为了使用ASCII值检查第一个字母,但它不起作用。
Sub Main()
Dim ID As String
Dim FL As String
Dim CORRECT As Boolean
CORRECT = 0
Console.WriteLine("Enter Identitfication")
ID = Console.ReadLine
FL = Left(ID, 1)
If FL = FL >= Asc("A") Then
If FL = FL <= Asc("Z") Then
CORRECT = 1
Console.WriteLine("Valid")
End If
End If
If CORRECT = 0 Then
Console.WriteLine("Invalid")
End If
Console.ReadKey()
End Sub
有人可以告诉我我做错了吗?
答案 0 :(得分:2)
使用前三个字符的Char.Is方法尝试以下操作,然后最后三个我们要求Integer.TryParse验证我们有一个int。
Module Module1
Sub Main()
Dim ID As String
Console.WriteLine("Enter Identitfication")
ID = Console.ReadLine
If ID.Length = 6 Then
If Char.IsUpper(ID(0)) AndAlso
Char.IsLower(ID(1)) AndAlso
Char.IsLower(ID(2)) AndAlso
Integer.TryParse(ID.Substring(3, 3), Nothing) Then
Console.WriteLine("Good to go")
Else
Console.WriteLine("Bad 2")
End If
Else
Console.WriteLine("Bad 1")
End If
Console.ReadKey()
End Sub
End Module
答案 1 :(得分:0)
为什么你使用布尔数据类型作为整数,你应该像这样使用它
正确=真
您可以使用 AndAlso 替换嵌套的if,以便您的代码
如果FL&gt; = Asc(&#34; A&#34;)又要FL&lt; = Asc(&#34; Z&#34;)那么......
3.您只检查了第一个字符,您必须检查第二个和第三个以及数字
必须删除的内容FL = FL
您可以将代码 FL =左(ID,1)替换为FL = ID(0)
答案 2 :(得分:0)
对于这种验证,您应该查看RegEx(正则表达式)。你建立了一个像你一样的模式:
第一个字母是大写第二个小写和第三个数字。
然后,你测试你的字符串。
这是测试您的模式的工具:http://regexr.com/
答案 3 :(得分:0)
我会使用正则表达式来查明我的id是否匹配。
您必须Imports System.Text.RegularExpressions
Sub Main()
Console.WriteLine("Enter Identitfication")
Dim ID As String = Console.ReadLine
If Regex.IsMatch(ID, "[A-Z]{1}[a-z]{2}\d{3}") Then
Console.WriteLine("Valid")
Else
Console.WriteLine("Invalid")
End If
Console.ReadKey()
End Sub
以上正则表达式检查以确保: