zoukankan      html  css  js  c++  java
  • C#中判断字符串是否数字 如果是返回结果

    C#中有没有判断一个string类型变量是否为数字类型的系统函数(如vb中的IsNumeric(s))?


    答案肯定是没有的。有人提议用int.Parse(string)的方法,然后通过捕获异常来判断返回的值。更好的方法是用正则表达式:
    public int IsNumeric(string str)
    {
          int i;
          if(str != null && Regex.IsMatch(str,@"^\d+$"))
                    i = int.Parse(str);
          else
                    i = -1;
           return i;
    }

    这应该是个好办法。不过如果要提出更高的要求,例如不仅要判断字符串是否全为数字,还要在判断后,要求将其进行转换。那么上述函数就有缺陷,因为在上面的正则表达式中无法判断‘-’符号。因此上面的函数只能转换非负数。尤有甚者,要求转换的不仅是整数,还包括浮点数,尤其是科学计数法的字符串,例如:string s = "-3.14159E+10"


    这里面的''E''、''.''、''+''等字符,都是比较特殊的,而且还要求它们出现的位置要符合浮点数或科学计数方法的规定。那么就不能使用正则表达式了,至少很麻烦(我是这样认为的,或许有好的方法)。问题还是回到最初的解决方案,就是使用Parse()方法和捕获异常。以下是实现此功能的方法:
    public bool IsNumeric(string s, out double result)
    {
       bool bReturn = true;
       try
       {
           result = double.Parse(s);
       }
       catch
       {
           result = 0;
           bReturn = false;
       }
       return bReturn;      
    }
    例如调用:

    string s1="abc";
    string s2="-3.14159E+10";
    double d1,d2;
    bool ty1 = IsNumeric(s1,out d1);
    bool ty2 = IsNumeric(s2,out d2);
    结果:
    ty1=false;d1=0;
    ty2=true;d2=31415900000

    说明:因为涉及到浮点数,就不能使用-1来做为出现错误的返回值,如前面的例子。也就是说本方法有两个返回值,一个是判断转换是否成功,为bool型;另一个是转换成功后的浮点数值。我用out来解决该问题。

  • 相关阅读:
    [省选联考 2020 A 卷] 组合数问题
    [HAOI2018]苹果树
    [集训队作业2013]城市规划
    多项式牛顿迭代
    多项式开方
    分治 FFT 模板的三种过法
    Graham 求静态凸包
    exp 初探
    HAOI2018 染色
    如何关闭wps热点,如何关闭wpscenter,如何关闭我的wps
  • 原文地址:https://www.cnblogs.com/sontin/p/1929822.html
Copyright © 2011-2022 走看看