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来解决该问题。

本方法仍然适合整型,只需对返回值进行强制转换即可。

 

 

 

相关文章:

  • 2021-06-22
  • 2022-12-23
  • 2022-12-23
  • 2021-06-26
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-25
  • 2022-12-23
  • 2021-11-06
  • 2022-12-23
相关资源
相似解决方案