CZoneSoft

Live simply to express my ambition (原淡蓝随笔) - CZoneSoft 致力于视频/虚拟现实的应用开发 承接软件开发

首页 新随笔 联系 订阅 管理
  136 Posts :: 9 Stories :: 1965 Comments :: 4 Trackbacks
其实用正则表达式也可以
static bool IsNumeric(string str)
  {
   if (str==null || str.Length==0)
    return false;
   foreach(char c in str)
   {
    if (!Char.IsNumber(c))
    {
     return false;
    }
   }
   return true;
  }

正则表达的写法是:
static bool IsNumeric(string str) 
{  
   System.Text.RegularExpressions.Regex reg1 
       = new System.Text.RegularExpressions.Regex(@"^[-]?\d+[.]?\d*$");  
  
return reg1.IsMatch(str); 
}
 
posted on 2004-03-26 09:05 陈震军 阅读(9342) 评论(29)  编辑 收藏 网摘 所属分类: C#/C++

Feedback

#1楼 2004-03-26 09:30 hBifTs
其实也可以使用Int32.Parse函数加上try...catch...来处理的..

  回复  引用    

#2楼 2004-03-26 10:31 小春
@hBifTs

不建议使用int32.parse来判断是否输入的是数字
int32.parse("123a") 'error

如果让我选择,我肯定会选择 陈震军 的方法来实现

Shared Function IsNumeric(ByVal str As String) As Boolean
If str=Nothing Or str.Length=0 Then
Return False
End If
Dim c As Char
For Each c In str
If Not Char.IsNumber(c) Then
Return False
End If
Next
Return True
End Function

  回复  引用    

#3楼 2004-03-26 12:09 TangLG
为什么呢?
  回复  引用    

#4楼 2004-03-26 12:19 coollzh
为何不用正则表达式?
  回复  引用    

#5楼 2004-03-26 12:39 hBifTs
@小春
呵呵,多谢指教..我一般使用的时候也不用异常的方式的..
@TangLG
如果使用异常的方式,会对增加系统的负担(异常处理消耗是比较大的)...

Good,,使用正则表达式:P

  回复  引用    

#6楼 2004-03-26 21:34 沐风
如果第一个字符是'0'呢?如"0321",是不是也是数字?还需要完善。
  回复  引用    

#7楼 2004-03-26 23:08 Z.J.Chen
0123按说应该是数字,只是如果写入数据库,INT字段会自动被改为123
  回复  引用    

#8楼 2004-03-27 01:59 XiaoHui
还是比较偏向于使用正则表达式.
  回复  引用    

#9楼 2004-03-27 10:59 hBifTs
nod.正则表达式是比较好的选择.用起来方便..不用作太多的考虑..
  回复  引用    

#10楼 2004-03-28 00:17 Z.J.Chen
哪种效率更高?测试过吗?
  回复  引用    

#11楼 2004-08-12 17:32 zz
有没有现成的方法呀!
  回复  引用    

#12楼 2004-08-17 09:36 smile[未注册用户]
如果有小数,好像这种方法便不可以了。

还是正则表达式好。

  回复  引用    

#13楼 2004-08-17 10:50 ChiKing-Lau
哪正则表达式该如何实现呢?别光说不作哦
  回复  引用    

#14楼 2004-08-29 23:03 今日的我
public Boolean IsNumeric(string strVal)
{
System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex("([0]|([1-9]+\\d{0,}?))(.[\\d]+)?$");
return reg1.IsMatch(strVal);
}

  回复  引用    

#15楼 2004-08-29 23:06 今日的我
public Boolean IsNumeric(string strVal) 

System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex("-?([0]|([1-9]+\\d{0,}?))(.[\\d]+)?$"); 
return reg1.IsMatch(strVal); 


  回复  引用    

#16楼 2004-12-04 12:02 雅雅
这个好像也不对,如果输入的是:"ju.123",得到的答案还是"true",就是说只是判断小数点后边,没有对小数点前边部分的判断.
  回复  引用    

#17楼 2004-12-12 03:21 陈震军
TO:雅雅 用这个函数,测试过你的例子::"ju.123",得到的答案是false。您是指正则表达式的判断不对吗?

static bool IsNumeric(string str)
{
if (str==null || str.Length==0)
return false;
foreach(char c in str)
{
if (!Char.IsNumber(c))
{
return false;
}
}
return true;
}


  回复  引用    

#18楼 2004-12-12 03:55 陈震军
楼上各位讨论正则表达怎么那么复杂?这个正则表达很简单:
static bool IsNumeric(string str)
{
System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex(@"^\d+[.]?\d*$");
return reg1.IsMatch(str);
}

  回复  引用    

#19楼[楼主] 2004-12-12 04:47 陈震军      
要验证负数这样就可以了
^[-]?\d+[.]?\d*$

  回复  引用  查看    

#20楼 2005-01-17 14:45 严拯辉
static bool IsInt(string str)
{
int i;
return int.TryParse(str, out i);
}

  回复  引用    

#21楼 2005-02-01 10:57 AaronCao
static bool IsNumeric(string str)
{
if (str==null || str.Length==0)
return false;
foreach(char c in str)
{
if (!Char.IsNumber(c))
{
return false;
}
}
return true;
}

这个方法不可以检查"123,456,789",小数点又如何,用IsNumber可能检查吗? 有试过这样输入吗:"1..1"

  回复  引用    

#22楼[楼主] 2005-02-01 19:35 陈震军      
用正则表达式的验证可以检查"123,456,789","1..1" 。

  回复  引用  查看    

#23楼 2005-09-30 17:22 Daniel[未注册用户]
2005,09,30引用该函数,留个脚印。
  回复  引用    

#24楼 2005-10-12 16:56 雨田美文      
看一下这个资源吧 人家写好的C# Project,开源Free,非常好用,推举

http://www.aspsimply.com/cs/CSTool.aspx">http://www.aspsimply.com/cs/CSTool.aspx

  回复  引用  查看    

string m = "12312321.12321321";
float f;
float.TryParse(m,out f);

  回复  引用    

怎么这么复杂,写个方法也慢不了多少吧!
  回复  引用    

#27楼 2007-04-09 16:41 afere[未注册用户]
使用TryParse方法应该是最快的,但是只有.NET 2.0支持。
  回复  引用    

大家好像都没有发现IsMactch是一个静态函数
  回复  引用    

#29楼 2008-01-08 10:22 wetob[未注册用户]
www.wetob.net
  回复  引用    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 4233




相关文章:

相关链接: