仅检查VB.NET字符串中的数字

时间:2010-07-30 19:04:39

标签: vb.net

我想在将它附加到StringBuilder之前对String进行检查,以确保字符串中只有数字字符。有什么简单的方法可以做到这一点?

9 个答案:

答案 0 :(得分:8)

使用Integer.TryParse()如果字符串中只有数字,它将返回true。 Int32最大值是2,147,483,647,所以如果你的价值低于那么你的罚款。 http://msdn.microsoft.com/en-us/library/f02979c7.aspx

您也可以使用Double.TryParse(),其最大值为1.7976931348623157E + 308,但它将允许小数点。

如果您希望得到的值不是整数,您可以随时查看字符串

string test = "1112003212g1232";
        int result;
        bool append=true;
        for (int i = 0; i < test.Length-1; i++)
        {
            if(!Int32.TryParse(test.Substring(i,i+1),out result))
            {
                //Not an integer
                append = false;
            }
        }

如果append保持为true,则字符串为整数。可能是一种更灵活的方式,但这应该有用。

答案 1 :(得分:8)

在VB.Net中编码以检查字符串是否仅包含数值。

If IsNumeric("your_text") Then
  MessageBox.Show("yes")
Else
  MessageBox.Show("no")
End If

答案 2 :(得分:4)

使用正则表达式:

Dim reg as New RegEx("^\d$")

If reg.IsMatch(myStringToTest) Then
  ' Numeric
Else
  ' Not
End If

更新:

如果您在VB.Net 2008/2010中这样做,也可以使用linq完成相同的任务。

Dim isNumeric as Boolean = False

Dim stringQuery = From c In myStringToTest 
                          Where Char.IsDigit(c) 
                          Select c

If stringQuery.Count <> myStringToTest.Length Then isNumeric = False

答案 3 :(得分:3)

如果您不想使用RegEx,只需使用char.IsNumber对每个字符进行简单检查即可。

您可以将它与All扩展方法结合使用(在C#中,我不知道如何在VB.net中编写它):

string value = "78645655";
bool isValid = value.All(char.IsNumber);

查看其他char方法,例如IsDigit

答案 4 :(得分:3)

2个其他紧凑型解决方案:

没有LINQ:

Dim foo As String = "10004"
Array.Exists(foo.ToCharArray, Function(c As Char) Not Char.IsNumber(c))

使用LINQ(在另一个答案中只是VB.Net相当于C#版本):

foo.All(Function(c As Char) Char.IsNumber(c))

答案 5 :(得分:2)

尚未提及负值,Integer.TryParse会接受。

我更喜欢拒绝负数的UInteger.TryParse。但是,如果值以&#34; +&#34;:

开头,则需要进行额外检查
Dim test As String = "1444"
Dim outTest As UInteger
If Not test.StartsWith("+") AndAlso UInteger.TryParse(test, outTest) Then
    MessageBox.Show("It's just digits!")
End If

ULong.TryParse代表更大的数字。

答案 6 :(得分:1)

模式匹配!请参阅thisthis(about.com)和this(VB.NET开发文章)。

答案 7 :(得分:1)

您可以使用正则表达式或Integer.TryParse,我更喜欢正则表达式检查

答案 8 :(得分:1)

假设您正在查看相对较短的字符串,其数字永远不会超过Max Int32值,请使用Gage的解决方案。如果它是可变长度,有时您可能会溢出,请使用正则表达式(System.Text.RegularExpressions

用于检查数字的正则表达式是相当常规的:^[0-9]+$

检查here以获得有关正则表达式的非常好的解释。