C# 如何检查我的字符串是否仅为数字
如何检查字符串是否只包含数字 我不记得了。类似于isnumeric的东西?您可以使用或C# 如何检查我的字符串是否仅为数字,c#,C#,如何检查字符串是否只包含数字 我不记得了。类似于isnumeric的东西?您可以使用或 另请参见int。对于非数字字符串,TryParse()方法将返回false只需检查每个字符 bool IsAllDigits(string s) { foreach (char c in s) { if (!char.IsDigit(c)) return false; } return true; } 或者使用LINQ bool IsA
另请参见int。对于非数字字符串,TryParse()方法将返回false只需检查每个字符
bool IsAllDigits(string s)
{
foreach (char c in s)
{
if (!char.IsDigit(c))
return false;
}
return true;
}
或者使用LINQ
bool IsAllDigits(string s) => s.All(char.IsDigit);
如果您想知道输入程序的值是否表示有效的整数值(在int
范围内),可以使用TryParse()
。请注意,这种方法与检查字符串是否只包含数字不同
bool IsAllDigits(string s) => int.TryParse(s, out int i);
你的问题不清楚。字符串中是否允许
?是否允许¼
string source = GetTheString();
//only 0-9 allowed in the string, which almost equals to int.TryParse
bool allDigits = source.All(char.IsDigit);
bool alternative = int.TryParse(source,out result);
//allow other "numbers" like ¼
bool allNumbers = source.All(char.IsNumber);
如果您想使用正则表达式,您必须使用如下内容:
string regExPattern = @"^[0-9]+$";
System.Text.RegularExpressions.Regex pattern = new System.Text.RegularExpressions.Regex(regExPattern);
return pattern.IsMatch(yourString);
你可以这样做:
public bool IsNumeric(string val)
{
if(int.TryParse(val)) return true;
else if(double.TryParse(val)) return true;
else if(float.TryParse(val)) return true;
else return false;
}
+1尽管我不同意文章建议避免使用Microsoft.VisualBasic命名空间中提供的库函数。它不是遗留代码或类似的东西。如果它比其他解决方案更容易满足您的需要,请使用它。我不建议使用
int.TryParse
或long.TryParse
,因为它们可能会溢出。@JimMischel:在.NET的当前版本中,int.TryParse()
不会引发溢出异常。它只是返回false。@JonathanWood:你误解了我在这里使用的术语“溢出”。我的观点是,由于溢出,int.TryParse
将为9876543210
值返回false
。也就是说,值“9876543210”太大,无法放入int
@JimMischel:好的,那么您是说在这种情况下它应该返回true,因为所有字符实际上都是数字。因此,从技术上讲,这是正确的,我(被接受的)回答也涉及到这一点。但是,在实践中,我怀疑大多数想要这些信息的人实际上都计划将该值赋给一个整数TryParse()
在这种情况下会很有帮助。如果字符串太长,它也会引发溢出异常。至少在当前版本的.NET中,int.TryParse()
不会在字符串太长或整数太大时引发异常。可能是
public bool IsNumeric(string str)
{
return str.All(c => "0123456789".Contains(c);
}