Vb.net 验证字符串
我正在尝试编写一个程序,用户输入一个电话号码,如果其中包含一个字母,就会显示一条消息Vb.net 验证字符串,vb.net,Vb.net,我正在尝试编写一个程序,用户输入一个电话号码,如果其中包含一个字母,就会显示一条消息 Module Module1 Sub Main() Dim TelNumber As String Dim Character As String TelNumber = Console.ReadLine() For Number = 0 To TelNumber.Length - 1 Character = TelNumber.Substring(Numbe
Module Module1
Sub Main()
Dim TelNumber As String
Dim Character As String
TelNumber = Console.ReadLine()
For Number = 0 To TelNumber.Length - 1
Character = TelNumber.Substring(Number)
If Integer.TryParse(Character, 0) <> 0 Then
Console.WriteLine("It cannot contain a letter")
Exit For
End If
Next
Console.ReadLine()
End Sub
模块1
副标题()
作为字符串的数字
将字符变暗为字符串
TelNumber=Console.ReadLine()
对于Number=0到TelNumber.Length-1
字符=电话号码。子字符串(号码)
如果整数.TryParse(字符,0)为0,则
Console.WriteLine(“它不能包含字母”)
退出
如果结束
下一个
Console.ReadLine()
端接头
端模块
但是,对于此代码,即使它只有在字符串包含少于11个字符时才能正常工作,之后即使它不包含任何字母,它仍然显示消息。我该如何解决这个问题?另外,我不明白Integer.TryParse函数的第二个参数代表什么?TelNumber。Substring(Number)
不仅仅是字符串的第个字符。
它返回的字符串开头去掉了Number
字符
因此,在循环的第一步,TelNumber.Substring(0)
返回整个字符串。
然后,Integer.TryParse()
失败,导致长字符串的整数溢出
提示:简单字符串验证是的一项任务。 使用正则表达式,也可以很容易地将tel.number格式扩展为
+4915771828000
或12-34-56
Imports System.Text.RegularExpressions
Module Module1
Sub Main()
Dim telNumber As String = Console.ReadLine()
Dim telValidationRegex As Regex = New Regex("^\d+$")
If NOT telValidationRegex.Match(telNumber).Success Then
Console.WriteLine("Wrong telephone number format")
End If
Console.ReadLine()
End Sub
End Module
我手头没有编译器,但我可以告诉你我认为这应该是什么样子。首先让我们看看 结果 类型:System.Int32 此方法返回时,如果转换成功,则包含与s中包含的数字等效的32位有符号整数值,如果转换失败,则为零。如果s参数为null或String.Empty、格式不正确或表示的数字小于MinValue或大于MaxValue,则转换失败。此参数在未初始化的情况下传递 因此,第二个参数应该是一个整数变量,其中包含尝试解析字符串的结果 那么我们来看看 startIndex 类型:System.Int32 此实例中子字符串的从零开始的字符位置 因此,您所做的不是查看每个字符并尝试将其转换为整数。它查看整数,并试图将其转换为整数。然后是除第一个字符以外的整数,并尝试将其转换为数字。等等 我猜想您会发现Int32只能存储大约10位长的数字(2^32或4294967296) 你要做的是看每个角色,像这样
Module Module1
//Warning, did not try to compile
Sub Main()
Dim TelNumber As String
Dim Character As String
TelNumber = Console.ReadLine()
For Number = 0 To TelNumber.Length - 1
Character = TelNumbert(Number)
Dim OutputNumber as Integer
If Not Integer.TryParse(Character, OutputNumber) Then
Console.WriteLine("It cannot contain a letter")
Exit For
End If
Next
Console.ReadLine()
End Sub
End Module
像
1-800-FLOWERS
这样的数字呢?至于TryParse,请参见:Google“vb.net验证电话号码”。点击率很高。嗨@Todd432,我们的答案对你有帮助吗?