[散分]分享一个检测字符串是否为数字的方法
散分,散分
为了让大家得到技术分,分享一个检测字符串是否为数字的方法
上代码
C# code
public static bool IsNumber(this string input)
{
if (string.IsNullOrEmpty(input))
return false;
//i : 计数器(记录共有多少个.)
//j : 起始校验位置
//m : 字符串长度
int i = 0, j = 0, m = input.Length;
if (input[m - 1] == '.') //任何以.结尾的字符串都不是数字
return false;
if (input[0] == '+' || input[0] == '-')
{
j = 1; //如果第一位为+或者-,那么将从第2为开始检测
if (m == 1) return false; //如果此时字符串的长度为1,那么不是数字
}
if (input[j] == '0')
{
if (m > j)
if (input[j + 1] != '.') return false; //如果开始检测位是0,不是末位,那么下一位如果不是. 则不是数字
}
for (; j < m; j++)
{
if (input[j] == '.')
i++;
else
{
if (input[j] < 48 || input[j] > 57)
return false;
}
}
if (i > 1) return false; //如果多于1个. 则不是数字
return true;
}
发现的Bug的将得到较多的分,呵呵呵
------解决方案--------------------谢谢楼主分享~
JF
------解决方案--------------------int.TryParse ()方法也可以啊。呵呵 接分...
------解决方案--------------------楼主这么好心,我就不客气了..呵..
顺便学习一下..
------解决方案--------------------谢谢楼主分享
------解决方案--------------------帮顶,接分
------解决方案--------------------谢谢分享
------解决方案--------------------谢谢分享
------解决方案--------------------顶这个..好长时间没看到分享了
------解决方案--------------------
------解决方案--------------------谢谢分享
------解决方案--------------------恩,不错,用正则也是可以的。
------解决方案--------------------
------解决方案--------------------up...接分...
------解决方案--------------------不用搞这么麻烦,直接使用Int32或Double的TryParse()就行了。
TryParse 方法在转换失败时不引发异常。
下面是Int32.TryParse()的输入参数
s 参数包含一个如下形式的数字:
[ws][sign]digits[ws]
方括号([ 和 ])中的项是可选的;其他项的值如下所示。
ws
可选的空白。
sign
一个可选符号。
digits
一系列从 0 到 9 之间的数字。
下面是Double.TryParse()的输入参数
s 参数可以包含 PositiveInfinitySymbol、NegativeInfinitySymbol、NaNSymbol 或以下形式的字符串:
[ws][sign]integral-digits[.[fractional-digits]][e[sign]exponential-digits][ws]
可选项括在方括号([ 和 ])中。包含“digits”一词的项由一系列从 0 到 9 之间的数字字符组成。
ws
一系列空白字符。
sign
负号或正号。
integral-digits
指定数字整数部分的一系列数字。整数位组可以用组分隔符分开。(例如,在某些区域性中,用逗号 (,) 作为千位分隔符。)有小数位时可以没有整数位。