繁体   English   中英

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

[英]Check for only digits in VB.NET String

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

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

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

使用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,则字符串为整数。 可能是一个更光滑的方式,但这应该工作。

使用正则表达式:

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

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

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

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

查看其他char方法,如IsDigit

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))

没有提到负值, Integer.TryParse会接受。

我更喜欢UInteger.TryParse ,它会拒绝负数。 但是,如果值以“+”开头,则需要进行额外检查:

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为更大的数字。

模式匹配! 看到这个这个 (about.com)和这个 (VB.NET开发文章)。

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

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

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

点击这里查看正则表达式的非常好的解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM