题
我有一个像这样的字符串
string 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");
}
要检查十进制数,请使用 十进制替换int.TryParse。的TryParse 强> 。查看此博客文章和评论“为什么要使用TryParse()在C#" 中了解详情。
如果您需要十进制数字,您也可以使用此正则表达式:
return System.Text.RegularExpressions.Regex.IsMatch(
TextValue, @"^-?\d+([\.]{1}\d*)?Microsoft.VisualBasic.Information.IsNumeric("abc");
quot;);
最后另一种选择(如果你不是虔诚地反对VB.NET ),你可以使用Microsoft.VisualBasic命名空间中的方法:
<*>如果你要遍历字符串,请不要使用int.TryParse ......这太重了。相反,使用char.IsNumber();
示例:
foreach (char c in myString)
if (char.IsNumber(c))
return true;
str.ToCharArray().Any(x => char.IsNumber(x));
结合部分Kamals答案和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)
不隶属于 StackOverflow