c#代码检查字符串是否为数字

我正在使用Visual Studio 2010.I想要检查字符串是否为数字。是否有任何内置函数来检查这个或我们是否需要编写自定义代码?

您可以使用int.TryParse方法。 例:

 string s = ... int result; if (int.TryParse(s, out result)) { // The string was a valid integer => use result here } else { // invalid integer } 

对于除整数之外的其他数字类型,还有float.TryParse , double.TryParse和decimal.TryParse方法。

但是,如果这是出于validation目的,您还可以考虑使用ASP.NET中的内置validation控件 。 这是一个例子 。

你可以这样做……

  string s = "sdf34"; Int32 a; if (Int32.TryParse(s, out a)) { // Value is numberic } else { //Not a valid number } 

是的,有: int.TryParse(...)检查out bool param。

看看这个问题:

什么是NaN或IsNumeric的C#等价物?

您可以使用内置方法Int.Parse或Double.Parse方法。 您可以编写以下函数并在必要时调用它来进行检查。

 public static bool IsNumber(String str) { try { Double.Parse(str); return true; } catch (Exception) { return false; } } 

所有Double / Int32 / … TryParse(...)方法的问题是,如果使用足够长的数字字符串,该方法将返回false;

例如:

 var isValidNumber = int.TryParse("9999999999", out result); 

这里, isValidNumber为false, result为0,尽管给定的字符串是数字。

如果你不需要将字符串用作int,我将使用正则表达式validation:

 var isValidNumber = Regex.IsMatch(input, @"^\d+$") 

这只会匹配整数。 例如,“123.45”将失败。

如果需要检查浮点数:

 var isValidNumber = Regex.IsMatch(input, @"^[0-9]+(\.[0-9]+)?$") 

注意:尝试创建单个Regex对象并将其发送到int测试方法以获得更好的性能。

试试这个:

 string Str = textBox1.Text.Trim(); double Num; bool isNum = double.TryParse(Str, out Num); if (isNum) MessageBox.Show(Num.ToString()); else `enter code here`MessageBox.Show("Invalid number"); 

使用IsNumeric()检查给定的字符串是否为数字。 无论是Int还是Double,它始终为数值返回True

 string val=...; bool b1 = Microsoft.VisualBasic.Information.IsNumeric(val); 

试试这个 – >

 String[] values = { "87878787878", "676767676767", "8786676767", "77878785565", "987867565659899698" }; if (Array.TrueForAll(values, value => { Int64 s; return Int64.TryParse(value, out s); } )) Console.WriteLine("All elements are integer."); else Console.WriteLine("Not all elements are integer.");