首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查IsNumeric是否

如何检查IsNumeric是否
EN

Stack Overflow用户
提问于 2012-03-21 17:00:56
回答 7查看 245K关注 0票数 50

可能重复:

How to identify if string contain a number?

在VB中有一个IsNumeric函数,在c#中有类似的东西吗?

为了绕开它,我刚刚写了代码:

代码语言:javascript
复制
    if (Int32.Parse(txtMyText.Text.Trim()) > 0)

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

EN

回答 7

Stack Overflow用户

发布于 2012-03-21 17:04:13

您可以编写扩展方法:

代码语言:javascript
复制
public static class Extension
{
    public static bool IsNumeric(this string s)
    {
        float output;
        return float.TryParse(s, out output);
    }
}
票数 87
EN

Stack Overflow用户

发布于 2012-03-21 17:04:52

如果字符串不是有效数字,则应使用TryParse - Parse抛出异常--例如,如果要测试有效整数:

代码语言:javascript
复制
int v;
if (Int32.TryParse(textMyText.Text.Trim(), out v)) {
  . . .
}

如果要测试有效的浮点数:

代码语言:javascript
复制
double v;
if (Double.TryParse(textMyText.Text.Trim(), out v)) {
  . . .
}

还请注意,Double.TryParse有一个重载版本,其中包含额外的参数,指定控制解析过程的各种规则和选项,例如本地化(“.”)。或者“,”)-见http://msdn.microsoft.com/en-us/library/3s27fasw.aspx

票数 19
EN

Stack Overflow用户

发布于 2012-03-21 17:05:11

我想你需要一些更普通的东西。试试这个:

代码语言:javascript
复制
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;
    }
}

希望能帮上忙!

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9809340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档