CZoneSoft

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

首页 新随笔 联系 订阅 管理
  136 Posts :: 8 Stories :: 1943 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 陈震军 阅读(8545) 评论(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      
哪正则表达式该如何实现呢?别光说不作哦
  回复  引用  查看    

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);
}

  回复  引用    

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
  回复  引用  查看    

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

  回复  引用    

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

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

#28楼  2007-10-18 13:02 叶旭辉 [未注册用户]
大家好像都没有发现IsMactch是一个静态函数
  回复  引用    

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





标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2004-12-12 04:43 编辑过
Google站内搜索


China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!

相关文章:

相关链接: