如何判断一个字符串全是数字?

时间:2023-01-04 14:19:08
如何判断一个字符串全是数字?

请给段代码,最好是用现成的一个函数就能解决。谢谢

42 个解决方案

#1


正则表达式

#2


\d+

#3


如果只是判断是否为全为数字,而不管0的位置,也就是00123这样也算合法,用下面的

private bool CheckNum(string src)
{
    if (System.Text.RegularExpressions.Regex.IsMatch(src, @"^[0-9]+$"))
        return true;
    return false;
}

否则用int.TryParse吧

#4


还有,就是,你可以用int.parse之类的类型转换,如果转换成功,也说明是数字

#5


正则吧
"^\d+$"

或者如果不是很长的话可以用long.TryParse

#6


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

#7


正则表达式效率较低

#8


参考

http://www.itepub.net/html/kaifajingcui/C_/2006/0514/30153.html

#9


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;
}
我用的这个

#10


正则吧
"^\d+$"

这个我还是第一次看到,过客和后面几位的方法是可行的,但我想了解一下如何用正则来解决这个任务,能给具体代码吗,是不是也是System.Text.RegularExpressions这样?

#11


过客的int.TryParse,会不会溢出?

#12


int。TryParse和long.Tryparses在2003中似乎没有?  只有parse?

#13


当然要考虑范围,如果你完全无法确定它可能存在的范围,用正则的那个吧,正则的方法虽然不是效率最高的,但灵活性较好

如果不是极其频繁的检测,看不出性能差异的

#14


static bool IsNum(string src)
        {
            for (int i = 0; i < src.Length; i++)
            {
                if(!Char.IsDigit(src[i]))
                    return false;
            }
            return true;
        }

我也写了个

#15


差不多相当于及其频繁的检测,即每行的号码我都需需要验证是否合法手机号码。

过客,正则的具体代码是怎样的,我已经5年没有编程了,想当初也是csdn的高手,呵呵

#16


哦,搞错,是频繁的检测的话,那种代码效率最高

#17


原来是前辈,失敬,我上面给的就是正则方法的代码啊
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循环测过正则的效率,但是没有用大量的数据源测过,你可以用你的数据源测一下,看能否达到你的要求

#18


Regex.isMatch("字符串",@"^(\d)+$")

#19


来晚了,都说完了。

#20


检验手机号码的正则表达式^1(3\d|5[389])\d{8}$比较牛,赞一个

#21


RegexOptions是在哪个using里面的?我编译通不过

#22


using System.Text.RegularExpressions;

#23


找到了,是using System.Text.RegularExpressions;
不过我还有一个问题,reg并没有在CheckNum中作任何引用,这个似乎不合常理?

#24


过客,你有msdn否,我买了一张盗版的dvd,说是有msdn,结果是2个6.0加一个2003,根本没有msdn,搞得我现在很被动,如果有的话,我可以开个ftp

#25


因该用正则表达式比较简单和通用吧

#26


呵呵,我这教育网,从我这传还不如你在迅雷上搜索来的快

reg在这里用到了
if (reg.IsMatch(src))

#27


可以去 微软的网站上 找 msdn 啊。在线的。

#28


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

#29


强!

#30


不要那么难吧,

try
{
这里将字符串转换为int ,如果能转换,就不会出错,如果不能转换,就会执行catch语句
}

例如
try
{
    Convert.ToInt32(某变量) ;// 如果不能转换,就会进行捕捉错误
}
catch (Exception AAA)
{
  这里提示这个变量不是全是数字
}

 楼主理解了吗?

#31


正则表达式

#32


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


我这么用!

#33


可以去 微软的网站上 找 msdn 啊。在线的。

具体网址是多少?

#34


http://msdn2.microsoft.com/en-us/library/tst0kwb1(VS.80).aspx

#35


try
{
    Convert.ToInt32(某变量) ;// 如果不能转换,就会进行捕捉错误
}
catch (Exception AAA)
{
  这里提示这个变量不是全是数字
}

 楼主理解了吗?
--------------------------------------------------------------------------
哥们,要是 某变量="12345678910"照样抛异常.
还是用正则比较好.

#36


^1(3\d|5[389])\d{8}$
这个正则表达式怎么解释?
1是第一位是1,3\d|5的意思是第二位是3或者5? [389]的意思是? \d{8}的意思是13x后面的长度是8位?

#37


^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的数字

#38


为什么不能把字符一个个读入然后转换为ASCII码,卡定一个范围,肯定不会溢出.

#39


正则?

#40


呵呵,其实还有156的。 我看考虑到扩展性,还是用1(3\d|5\d)\d{8}$为好?

#41


mark

#42


强!过客!高手
呵呵

#1


正则表达式

#2


\d+

#3


如果只是判断是否为全为数字,而不管0的位置,也就是00123这样也算合法,用下面的

private bool CheckNum(string src)
{
    if (System.Text.RegularExpressions.Regex.IsMatch(src, @"^[0-9]+$"))
        return true;
    return false;
}

否则用int.TryParse吧

#4


还有,就是,你可以用int.parse之类的类型转换,如果转换成功,也说明是数字

#5


正则吧
"^\d+$"

或者如果不是很长的话可以用long.TryParse

#6


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

#7


正则表达式效率较低

#8


参考

http://www.itepub.net/html/kaifajingcui/C_/2006/0514/30153.html

#9


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;
}
我用的这个

#10


正则吧
"^\d+$"

这个我还是第一次看到,过客和后面几位的方法是可行的,但我想了解一下如何用正则来解决这个任务,能给具体代码吗,是不是也是System.Text.RegularExpressions这样?

#11


过客的int.TryParse,会不会溢出?

#12


int。TryParse和long.Tryparses在2003中似乎没有?  只有parse?

#13


当然要考虑范围,如果你完全无法确定它可能存在的范围,用正则的那个吧,正则的方法虽然不是效率最高的,但灵活性较好

如果不是极其频繁的检测,看不出性能差异的

#14


static bool IsNum(string src)
        {
            for (int i = 0; i < src.Length; i++)
            {
                if(!Char.IsDigit(src[i]))
                    return false;
            }
            return true;
        }

我也写了个

#15


差不多相当于及其频繁的检测,即每行的号码我都需需要验证是否合法手机号码。

过客,正则的具体代码是怎样的,我已经5年没有编程了,想当初也是csdn的高手,呵呵

#16


哦,搞错,是频繁的检测的话,那种代码效率最高

#17


原来是前辈,失敬,我上面给的就是正则方法的代码啊
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循环测过正则的效率,但是没有用大量的数据源测过,你可以用你的数据源测一下,看能否达到你的要求

#18


Regex.isMatch("字符串",@"^(\d)+$")

#19


来晚了,都说完了。

#20


检验手机号码的正则表达式^1(3\d|5[389])\d{8}$比较牛,赞一个

#21


RegexOptions是在哪个using里面的?我编译通不过

#22


using System.Text.RegularExpressions;

#23


找到了,是using System.Text.RegularExpressions;
不过我还有一个问题,reg并没有在CheckNum中作任何引用,这个似乎不合常理?

#24


过客,你有msdn否,我买了一张盗版的dvd,说是有msdn,结果是2个6.0加一个2003,根本没有msdn,搞得我现在很被动,如果有的话,我可以开个ftp

#25


因该用正则表达式比较简单和通用吧

#26


呵呵,我这教育网,从我这传还不如你在迅雷上搜索来的快

reg在这里用到了
if (reg.IsMatch(src))

#27


可以去 微软的网站上 找 msdn 啊。在线的。

#28


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

#29


强!

#30


不要那么难吧,

try
{
这里将字符串转换为int ,如果能转换,就不会出错,如果不能转换,就会执行catch语句
}

例如
try
{
    Convert.ToInt32(某变量) ;// 如果不能转换,就会进行捕捉错误
}
catch (Exception AAA)
{
  这里提示这个变量不是全是数字
}

 楼主理解了吗?

#31


正则表达式

#32


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


我这么用!

#33


可以去 微软的网站上 找 msdn 啊。在线的。

具体网址是多少?

#34


http://msdn2.microsoft.com/en-us/library/tst0kwb1(VS.80).aspx

#35


try
{
    Convert.ToInt32(某变量) ;// 如果不能转换,就会进行捕捉错误
}
catch (Exception AAA)
{
  这里提示这个变量不是全是数字
}

 楼主理解了吗?
--------------------------------------------------------------------------
哥们,要是 某变量="12345678910"照样抛异常.
还是用正则比较好.

#36


^1(3\d|5[389])\d{8}$
这个正则表达式怎么解释?
1是第一位是1,3\d|5的意思是第二位是3或者5? [389]的意思是? \d{8}的意思是13x后面的长度是8位?

#37


^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的数字

#38


为什么不能把字符一个个读入然后转换为ASCII码,卡定一个范围,肯定不会溢出.

#39


正则?

#40


呵呵,其实还有156的。 我看考虑到扩展性,还是用1(3\d|5\d)\d{8}$为好?

#41


mark

#42


强!过客!高手
呵呵