可能重复:
如何识别字符串是否包含数字?
在VB中有一个IsNumeric函数,c#中有类似的东西吗?
为了解决它,我只是写了代码:
if (Int32.Parse(txtMyText.Text.Trim()) > 0)
Run Code Online (Sandbox Code Playgroud)
我只是想知道是否有更好的方法来做到这一点.
Otá*_*cio 82
你可以写一个扩展方法:
public static class Extension
{
public static bool IsNumeric(this string s)
{
float output;
return float.TryParse(s, out output);
}
}
Run Code Online (Sandbox Code Playgroud)
MiM*_*iMo 17
您应该使用TryParse- Parse如果字符串不是有效数字则抛出异常 - 例如,如果您要测试有效整数:
int v;
if (Int32.TryParse(textMyText.Text.Trim(), out v)) {
. . .
}
Run Code Online (Sandbox Code Playgroud)
如果要测试有效的浮点数:
double v;
if (Double.TryParse(textMyText.Text.Trim(), out v)) {
. . .
}
Run Code Online (Sandbox Code Playgroud)
另请注意,Double.TryParse有一个带有额外参数的重载版本,指定控制解析过程的各种规则和选项 - 例如本地化('.'或',') - 请参阅http://msdn.microsoft.com/en-us/library/3s27fasw .aspx.
Rei*_*ldo 15
我认为你需要一些更通用的东西.试试这个:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
其他答案建议使用TryParse,这可能符合您的需要,但提供该功能的最安全的方法IsNumeric是引用VB库并使用该IsNumeric功能.
IsNumeric比...更灵活TryParse.例如,IsNumeric返回true字符串"$100",而TryParse方法都返回false.
要IsNumeric在C#中使用,请添加对Microsoft.VisualBasic.dll的引用.该函数是类的静态方法Microsoft.VisualBasic.Information,所以假设你有using Microsoft.VisualBasic;,你可以这样做:
if (Information.IsNumeric(txtMyText.Text.Trim())) //...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
226095 次 |
| 最近记录: |