如何检查是否数字

可能重复:
如何识别string是否包含数字?

在VB中有一个IsNumeric函数,有没有类似的C#?

为了解决它,我只写了代码:

if (Int32.Parse(txtMyText.Text.Trim()) > 0) 

我只是想知道是否有更好的方法来做到这一点。

你可以写一个扩展方法:

 public static class Extension { public static bool IsNumeric(this string s) { float output; return float.TryParse(s, out output); } } 

我认为你需要一些更通用的东西。 尝试这个:

 public static System.Boolean IsNumeric (System.Object Expression) { if(Expression == null || Expression is DateTime) return false; if(Expression is Int16 || Expression is Int32 || Expression is Int64 || Expression is Decimal || Expression is Single || Expression is Double || Expression is Boolean) return true; try { if(Expression is string) Double.Parse(Expression as string); else Double.Parse(Expression.ToString()); return true; } catch {} // just dismiss errors but return false return false; } } 

希望能帮助到你!

你应该使用TryParse – 如果string不是一个有效的数字, Parse抛出exception – 例如,如果你想testing一个有效的整数:

 int v; if (Int32.TryParse(textMyText.Text.Trim(), out v)) { . . . } 

如果你想testing一个有效的浮点数:

 double v; if (Double.TryParse(textMyText.Text.Trim(), out v)) { . . . } 

还要注意, Double.TryParse有一个重载的版本,它带有额外的参数,指定控制parsing过程的各种规则和选项 – 例如localization('。'或',') – 参见http://msdn.microsoft.com/en-us/ library / 3s27fasw.aspx 。

其他答案build议使用TryParse ,这可能适合您的需要,但提供IsNumeric函数function的最安全的方法是引用VB库并使用IsNumeric函数。

IsNumericTryParse更灵活。 例如, IsNumeric对string"$100"返回true ,而TryParse方法则返回false

要在C#中使用IsNumeric ,请添加对Microsoft.VisualBasic.dll的引用。 该函数是Microsoft.VisualBasic.Information类的一个静态方法,因此假设您已经using Microsoft.VisualBasic; , 你可以这样做:

 if (Information.IsNumeric(txtMyText.Text.Trim())) //... 

有TryParse方法,它返回一个布尔值,指示转换是否成功。

您应该使用TryParse方法将数字的string表示转换为其32位有符号整数等效项。 返回值指示转换是否成功。

  int intParsed; if(int.TryParse(txtMyText.Text.Trim(),out intParsed)) { // perform your code } 

有一个更好的方法:

 int valueParsed; if(Int32.TryParse(txtMyText.Text.Trim(), out valueParsed)) { ... } 

如果您尝试parsing文本并且无法parsing,则Int32.Parse方法将引发exception。 我认为最好是使用TryParse方法捕获exception,如果遇到任何exception,让我们知道它是一个布尔值。

在parsingInt32.Parse考虑的文本时有很多复杂的问题。 重复这个努力是愚蠢的。 因此,这很可能是VB的IsNumeric所采用的方法。 您还可以通过NumberStyles枚举自定义parsing规则,以允许hex,十进制,货币和其他一些样式。

非基于Web的应用程序的另一种常见方法是将文本框的input限制为只接受可parsing为整数的字符。

编辑:您可以通过指定具体的NumberStyles来接受更多种类的input格式,例如货币值(“$ 100”)和指数(“1E4”):

 int valueParsed; if(Int32.TryParse(txtMyText.Text.Trim(), NumberStyles.AllowCurrencySymbol | NumberStyles.AllowExponent, CultureInfo.CurrentCulture, out valueParsed)) { ... } 

…或通过允许任何forms的支持格式:

 int valueParsed; if(Int32.TryParse(txtMyText.Text.Trim(), NumberStyles.Any, CultureInfo.CurrentCulture, out valueParsed)) { ... }