我如何检查字符串值是否为数字似乎仍然失败,因为它附加了后缀。
这就是我的后缀 https://msdn.microsoft.com/en-us/library/aa664674(v=vs.71).aspx
Dim value As String = "4294967295U"
If IsNumeric(value) Then
MsgBox "is number"
End If
Dim val as UInteger
If UInteger.TryParse(value, num) Then
MsgBox "is number also"
End If
答案 0 :(得分:1)
当您在代码中将数值声明为常量时使用后缀 - 让编译器知道它应该将该数字视为哪种类型。这是必要的,因为 <appSettings>
<add key="myDBEntities" value="metadata=res://*/myDBModel.csdl|res://*/myDBModel.ssdl|res://*/myDBModel.msl;provider=System.Data.SqlClient;provider connection string="data source=myServer\test;initial catalog=myDB;user id=myDBUser;password=PASS==; multipleactiveresultsets=True;App=EntityFramework" providerName=System.Data.EntityClient;" />
</appSettings>
可能意味着1
,int
,uint
,long
,ulong
等等。< / p>
当您使用byte
时,没有必要这样做,因为您已经使用过课程(TryParse
已经开启TryParse
)知道你期望输入代表什么类型。所以它应该只是数字,没有后缀。
答案 1 :(得分:1)
根据您的输入,您可以在执行检查之前清除任何已知的前缀/后缀。查看您提供的单个示例,您可以使用TrimEnd
删除尾随U
。
Dim knownSuffixes = New Char() {"U"c}
If IsNumeric(value.TrimEnd(knownSuffixes)) Then
MsgBox "is number"
End If
这里你应该注意边缘情况。我不知道你正在寻找什么样的输入。例如,1234UUUUUU
输入无效吗?如果是这样,这会给你误报。
另一种可能更强大的方法是使用正则表达式来准确指定预期的字符序列。
答案 2 :(得分:0)
感谢Asad的回答,这很好用
Dim value as String = "4294967295U"
value = value.TrimEnd(New Char() {"U", "u", "L", "l"})
If IsNumeric(value) Then
'Yes is number now :)
Else
'Boo!
End If
可以使用.ToLowerCase()或.ToUpperCase()将其链接到只有2个元素。