English 中文(简体)
在C#中检查字符串值是否具有数字值
原标题:
  • 时间:2008-11-06 09:52:23
  •  标签:

我有一个类似这样的字符串

字符串 str = "dfdsfdsf8fdfdfd9dfdfd4" 的中文翻译为:str =“dfdsfdsf8fdfdfd9dfdfd4”。

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

最佳回答

正则表达式怎么样:

bool val = System.Text.RegularExpressions.Regex.IsMatch(str, @"d");
问题回答

如果您正在寻找整数值,您可以使用int.TryParse:

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

检查十进制数,请使用 Decimal.TryParse 代替 int.TryParse。有关详细信息,请查看此博客文章和评论"为什么你应该在 C# 中使用 TryParse()"

如果您需要小数,您也可以使用以下正则表达式:

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

最后,另一个选择(如果您不是宗教上反对VB.NET),您可以使用Microsoft.VisualBasic命名空间中的方法:

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

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

例子:

foreach (char c in myString)
    if (char.IsNumber(c))
        return true;
str.ToCharArray().Any(x => char.IsNumber(x));

将卡马尔的一部分答案与Tristars的答案结合起来,会得到…

str.Any(char.IsNumber)

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

如果你和我一样是个 Linq 狂热者,你会这样做。

string s = "abc1def2ghi";
bool HasNumber = (from a in s.ToCharArray() where a >=  0  && a <=  9  select a).Count() > 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
            }
        }
str.ToCharArray().Any(char.IsNumber)




相关问题
热门标签