任何带有后缀 U u L l UL Ul uL ul LU Lu lU lu .NET 的有效 TryParse 或 IsNumeric

Any working TryParse or IsNumeric with suffix U u L l UL Ul uL ul LU Lu lU lu .NET

我如何检查字符串值是否为数字它似乎一直失败,因为它附加了一个后缀。

这就是我所说的后缀 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

当您在代码中将数值声明为常量时,会使用后缀 - 让编译器知道应该将该数字视为什么类型。这是必要的,因为 1 可能表示 intuintlongulongbyte 等任何一个。

当您使用 TryParse 时没有必要,因为 class 您正在使用 TryParse 调用(UInteger 在您的情况下)已经知道什么您希望输入代表的类型。所以它应该只是数字,没有后缀。

感谢 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 个元素。

根据您的输入,您可能能够在进行检查之前清理任何已知的 prefixes/suffixes。查看您提供的单个示例,您可以使用 TrimEnd 删除尾随 Us。

Dim knownSuffixes = New Char() {"U"c}

If IsNumeric(value.TrimEnd(knownSuffixes)) Then
    MsgBox "is number"
End If

你应该注意这里的边缘情况。我不知道你在寻找什么样的输入。例如,1234UUUUUU 是无效输入吗?如果是这样,这会给你误报。

另一种可能更可靠的方法是使用正则表达式来准确指定预期的字符序列。