在C#中检查字符串值是否具有数值

时间:2008-11-06 09:52:23

标签: asp.net c#-2.0

我有一个像这样的字符串

string str =“dfdsfdsf8fdfdfd9dfdfd4”

我需要通过循环遍历数组来检查字符串是否包含数字。

8 个答案:

答案 0 :(得分:32)

正则表达式怎么样:

bool val = System.Text.RegularExpressions.Regex.IsMatch(str, @"\d");

答案 1 :(得分:9)

如果您要查找整数值,可以使用 int.TryParse

int result;
if (int.TryParse("123", out result))
{
    Debug.WriteLine("Valid integer: " + result);
}
else
{
    Debug.WriteLine("Not a valid integer");
}

要检查十进制数,请将int.TryParse替换为Decimal.TryParse。有关详细信息,请查看此博客文章和评论"Why you should use TryParse() in C#"

如果您需要十进制数字,您也可以使用此正则表达式:

return System.Text.RegularExpressions.Regex.IsMatch(
   TextValue, @"^-?\d+([\.]{1}\d*)?$");

最后另一种选择(如果你不是虔诚地反对VB.NET ),你可以使用Microsoft.VisualBasic命名空间中的方法:

Microsoft.VisualBasic.Information.IsNumeric("abc"); 

答案 2 :(得分:6)

如果你要遍历字符串,请不要使用int.TryParse ......这太重了。相反,使用char.IsNumber();

示例:

foreach (char c in myString)
    if (char.IsNumber(c))
        return true;

答案 3 :(得分:4)

str.ToCharArray().Any(x => char.IsNumber(x));

答案 4 :(得分:1)

结合部分Kamals答案和Tristars答案给出......

array length

我认为这是最简洁和可读的方式,而不是正则表达式

答案 5 :(得分:0)

如果你是像我一样的linq瘾君子,那你就是这样做的

string s = "abc1def2ghi";
bool HasNumber = (from a in s.ToCharArray() where a >= '0' && a <= '9' select a).Count() > 0;

答案 6 :(得分:0)

在C#2.0中,试试这个:

        string str = "dfdsfdsf8fdfdfd9dfdfd4";

        for (int i = 0; i < str.Length; i++)
        {
            int result;
            if (int.TryParse(str[i].ToString(), out result))
            {
                //element is a number            
            }
            else
            {
                // not a number
            }
        }

答案 7 :(得分:0)

str.ToCharArray().Any(char.IsNumber)