[散分]分享一个检测字符串是否为数字的方法

NqIceCoffee 2009-08-06 10:31:35
散分,散分

为了让大家得到技术分,分享一个检测字符串是否为数字的方法

上代码

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的将得到较多的分,呵呵呵
...全文
595 74 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
74 条回复
切换为时间正序
请发表友善的回复…
发表回复
jsrrwoaini 2012-08-15
  • 打赏
  • 举报
回复
int.TryParse明明就好用,还有正则,LZ非要写这么一个菜鸟级的东西。
keninami 2010-06-11
  • 打赏
  • 举报
回复
谢谢分享,JFJF
wuyq11 2009-08-06
  • 打赏
  • 举报
回复
方法很多,如正则,JS,intTryPrse
function checkIsInteger(str)
{
if(str == "")
return true;
var exp = /^\s*[-\+]?\d+\s*$/;
if (str.match(exp) == null)
return false
else
return true;
}
int i=0;
if(int.Try("",out i))
{
}
shui8iuhs 2009-08-06
  • 打赏
  • 举报
回复
接分接分啦~
jiangzhe556 2009-08-06
  • 打赏
  • 举报
回复
接分了
wwq0123 2009-08-06
  • 打赏
  • 举报
回复
收藏
昕颖 2009-08-06
  • 打赏
  • 举报
回复
学习了。只不过我个人觉得啊。像你这样去写的话。怎么不去一个正则表达式。实现呢。这只是我个人的想法啊。
yishion_mao 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 nqicecoffee 的回复:]
10楼的头像好大胆
[/Quote]
我回去看了下10L的头像
的确很大胆
yishion_mao 2009-08-06
  • 打赏
  • 举报
回复
JF
杰子 2009-08-06
  • 打赏
  • 举报
回复
楼主结贴吧,多给2楼点。呵呵
llsen 2009-08-06
  • 打赏
  • 举报
回复
呵呵
sohighthesky 2009-08-06
  • 打赏
  • 举报
回复
jf,

我用using Microsoft.VisualBacsic;
要单独添加引用才能调用下面的方法

Information.IsNumberic(str);
wcqqq 2009-08-06
  • 打赏
  • 举报
回复
bug是没发现,就是发现一个不足(也算一个较大的bug吧)
还有科学记数法的字符串不能识别,不知道楼主能不能改进一下e.g : (1.2e−4)
newdigitime 2009-08-06
  • 打赏
  • 举报
回复
public static bool IsNumber(this string input)
{return Regex.IsMatch(input,@"^\d+$")}
newdigitime 2009-08-06
  • 打赏
  • 举报
回复
老兄,用正则一句话搞定的.你写这么复杂.
Lovely_baby 2009-08-06
  • 打赏
  • 举报
回复
来接分了!
wenblue7 2009-08-06
  • 打赏
  • 举报
回复
我都是这么判断的诶
public static bool IsNumber(this string input)
{
try
{
int i=Int32.Parse(input);
return true;
}
catch (FormatException ex)
{
return false;
}
}
wmdf97 2009-08-06
  • 打赏
  • 举报
回复
谢谢分享!
zhang17500332 2009-08-06
  • 打赏
  • 举报
回复
楼主建议你用正则表达式
NqIceCoffee 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 lcl_data 的回复:]
11楼号代码!,赞
学习
[/Quote]

呵呵,过奖~~
加载更多回复(54)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧