如何判断一个字符串全是数字? 如何判断一个字符串全是数字?请给段代码,最好是用现成的一个函数就能解决。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果只是判断是否为全为数字,而不管0的位置,也就是00123这样也算合法,用下面的private bool CheckNum(string src){ if (System.Text.RegularExpressions.Regex.IsMatch(src, @"^[0-9]+$")) return true; return false;}否则用int.TryParse吧 还有,就是,你可以用int.parse之类的类型转换,如果转换成功,也说明是数字 正则吧"^\d+$"或者如果不是很长的话可以用long.TryParse public static bool IsNum(String str){for(int i=0;i<str.Length;i++){if(str[i]<='0' || str[i]>='9')return false;}return true;} 参考http://www.itepub.net/html/kaifajingcui/C_/2006/0514/30153.html public static bool IsNum(String str){for(int i=0;i<str.Length;i++){if(str[i]<='0' || str[i]>='9')return false;}return true;}我用的这个 正则吧"^\d+$"这个我还是第一次看到,过客和后面几位的方法是可行的,但我想了解一下如何用正则来解决这个任务,能给具体代码吗,是不是也是System.Text.RegularExpressions这样? 过客的int.TryParse,会不会溢出? int。TryParse和long.Tryparses在2003中似乎没有? 只有parse? static bool IsNum(string src) { for (int i = 0; i < src.Length; i++) { if(!Char.IsDigit(src[i])) return false; } return true; }我也写了个 差不多相当于及其频繁的检测,即每行的号码我都需需要验证是否合法手机号码。过客,正则的具体代码是怎样的,我已经5年没有编程了,想当初也是csdn的高手,呵呵 原来是前辈,失敬,我上面给的就是正则方法的代码啊private bool CheckNum(string src){ if (System.Text.RegularExpressions.Regex.IsMatch(src, @"^[0-9]+$")) return true; return false;}如果说验证是否为合法的手机号码,那还得用正则private bool CheckNum(string src){ if (System.Text.RegularExpressions.Regex.IsMatch(src, @"^1(3\d|5[389])\d{8}$")) return true; return false;}如果是频繁检测,可以这样提高效率,当然,只是在频繁检测的情况下System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"^1(3\d|5[389])\d{8}$", RegexOptions.Compiled);private bool CheckNum(string src){ if (reg.IsMatch(src)) return true; return false;}我倒是用for循环测过正则的效率,但是没有用大量的数据源测过,你可以用你的数据源测一下,看能否达到你的要求 RegexOptions是在哪个using里面的?我编译通不过 using System.Text.RegularExpressions; 找到了,是using System.Text.RegularExpressions;不过我还有一个问题,reg并没有在CheckNum中作任何引用,这个似乎不合常理? 过客,你有msdn否,我买了一张盗版的dvd,说是有msdn,结果是2个6.0加一个2003,根本没有msdn,搞得我现在很被动,如果有的话,我可以开个ftp 呵呵,我这教育网,从我这传还不如你在迅雷上搜索来的快reg在这里用到了if (reg.IsMatch(src)) 可以去 微软的网站上 找 msdn 啊。在线的。 bool IsNum(string src) { for (int i = 0; i < (src.Length)/2; i++) { if(!Char.IsDigit(src[i])) return false; } for(i = (src.Length)/2; i<src.Length;i++) { if(!Char.IsDigit(src[i])) return false; } return true; } 不要那么难吧,在try{这里将字符串转换为int ,如果能转换,就不会出错,如果不能转换,就会执行catch语句}例如try{ Convert.ToInt32(某变量) ;// 如果不能转换,就会进行捕捉错误}catch (Exception AAA){ 这里提示这个变量不是全是数字} 楼主理解了吗? public static bool IsNum(string Str) { bool blResult = true; if (Str == "") { blResult = false; } else { foreach (char Char in Str) { if (!Char.IsNumber(Char)) { blResult = false; break; } } if (blResult) if (int.Parse(Str) == 0) { blResult = false; } } return blResult; }if (!IsNum(rqID)){}我这么用! 可以去 微软的网站上 找 msdn 啊。在线的。具体网址是多少? http://msdn2.microsoft.com/en-us/library/tst0kwb1(VS.80).aspx try{ Convert.ToInt32(某变量) ;// 如果不能转换,就会进行捕捉错误}catch (Exception AAA){ 这里提示这个变量不是全是数字} 楼主理解了吗?--------------------------------------------------------------------------哥们,要是 某变量="12345678910"照样抛异常.还是用正则比较好. ^1(3\d|5[389])\d{8}$这个正则表达式怎么解释?1是第一位是1,3\d|5的意思是第二位是3或者5? [389]的意思是? \d{8}的意思是13x后面的长度是8位? ^1(3\d|5[389])\d{8}$1 第一位是1(3\d|5[389]) 第二位是3后接任意数字,或者5加3、8、9,因为现在15开头的只有153、158、189\d{8} 后面是长度为8的数字 为什么不能把字符一个个读入然后转换为ASCII码,卡定一个范围,肯定不会溢出. 呵呵,其实还有156的。 我看考虑到扩展性,还是用1(3\d|5\d)\d{8}$为好? C#启动线程 一个奇怪的现象。 完全崩溃 MySqlDataAdapter 在执行Update方法后无法查询记录 有没有能实现这样功能的软件?(50分) 老师说创建一个人民币类..可是怎么包括元角分的数据呢? C#用DB2OLEDB连接DB2,非数值型字段都显示<无法读取数据> DataGridView验证输入问题 急需求助高手!!!!!!!! 谁帮我解释一下这段代码中的using有什么作用? 为什么我的控制台程序运行后没EXE文件?(vb.net) 一个关于接口的初级问题 高手请进,请问怎么实现通过鼠标同时画三条平行线? 求获取URL的信息的正则表达式!在线等待?
{
if (System.Text.RegularExpressions.Regex.IsMatch(src, @"^[0-9]+$"))
return true;
return false;
}否则用int.TryParse吧
"^\d+$"或者如果不是很长的话可以用long.TryParse
{
for(int i=0;i<str.Length;i++)
{
if(str[i]<='0' || str[i]>='9')
return false;
}
return true;
}
{
for(int i=0;i<str.Length;i++)
{
if(str[i]<='0' || str[i]>='9')
return false;
}
return true;
}
我用的这个
"^\d+$"这个我还是第一次看到,过客和后面几位的方法是可行的,但我想了解一下如何用正则来解决这个任务,能给具体代码吗,是不是也是System.Text.RegularExpressions这样?
{
for (int i = 0; i < src.Length; i++)
{
if(!Char.IsDigit(src[i]))
return false;
}
return true;
}我也写了个
private bool CheckNum(string src)
{
if (System.Text.RegularExpressions.Regex.IsMatch(src, @"^[0-9]+$"))
return true;
return false;
}如果说验证是否为合法的手机号码,那还得用正则private bool CheckNum(string src)
{
if (System.Text.RegularExpressions.Regex.IsMatch(src, @"^1(3\d|5[389])\d{8}$"))
return true;
return false;
}如果是频繁检测,可以这样提高效率,当然,只是在频繁检测的情况下
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"^1(3\d|5[389])\d{8}$", RegexOptions.Compiled);
private bool CheckNum(string src)
{
if (reg.IsMatch(src))
return true;
return false;
}
我倒是用for循环测过正则的效率,但是没有用大量的数据源测过,你可以用你的数据源测一下,看能否达到你的要求
不过我还有一个问题,reg并没有在CheckNum中作任何引用,这个似乎不合常理?
if (reg.IsMatch(src))
{
for (int i = 0; i < (src.Length)/2; i++)
{
if(!Char.IsDigit(src[i]))
return false;
}
for(i = (src.Length)/2; i<src.Length;i++)
{
if(!Char.IsDigit(src[i]))
return false;
}
return true;
}
在
try
{
这里将字符串转换为int ,如果能转换,就不会出错,如果不能转换,就会执行catch语句
}例如
try
{
Convert.ToInt32(某变量) ;// 如果不能转换,就会进行捕捉错误
}
catch (Exception AAA)
{
这里提示这个变量不是全是数字
} 楼主理解了吗?
{
bool blResult = true;
if (Str == "")
{
blResult = false;
}
else
{
foreach (char Char in Str)
{
if (!Char.IsNumber(Char))
{
blResult = false;
break;
}
}
if (blResult)
if (int.Parse(Str) == 0)
{
blResult = false;
}
}
return blResult;
}if (!IsNum(rqID))
{
}
我这么用!
{
Convert.ToInt32(某变量) ;// 如果不能转换,就会进行捕捉错误
}
catch (Exception AAA)
{
这里提示这个变量不是全是数字
} 楼主理解了吗?
--------------------------------------------------------------------------
哥们,要是 某变量="12345678910"照样抛异常.
还是用正则比较好.
这个正则表达式怎么解释?
1是第一位是1,3\d|5的意思是第二位是3或者5? [389]的意思是? \d{8}的意思是13x后面的长度是8位?
(3\d|5[389]) 第二位是3后接任意数字,或者5加3、8、9,因为现在15开头的只有153、158、189
\d{8} 后面是长度为8的数字