当前位置:编程学习 > C#/ASP.NET >>

如何最快判断字符串“123456”全是数字,而“1234WW”不全部是数字?

VB有现成的函数isnumeberic,但是C#是怎么实现呢?
请教! --------------------编程问答-------------------- 用正则表达式吧 @"^[0-9]+$" --------------------编程问答-------------------- if (System.Text.RegularExpressions.Regex.IsMatch(“要验证的字符串”, @"^[0-9]+$"))
return true;
--------------------编程问答-------------------- 如果能确定在一定范围内,可以用int.TryParse等方法来判断

否则用正则来判断好一点

string yourStr = ...............;
if (Regex.IsMatch(yourStr, @"^\d+$"))
{
    MessageBox.Show("全数字");
}
else
{
    MessageBox.Show("非全数字");
} --------------------编程问答-------------------- 最快应该是正则吧,你也可以自己写个函数判断,但是效率应该没有正则高 --------------------编程问答-------------------- 要快, 用正则 --------------------编程问答-------------------- 弱弱的说,其实,正则不是最快的,但是相对来说,正则比较通用和灵活 --------------------编程问答-------------------- 谢谢楼上各位老大!有个问题:
IsMatch(“要验证的字符串”, @"^[0-9]+$"))===^+$:这3个是什么意思呢?
--------------------编程问答-------------------- 正则
return System.Text.RegularExpressions.Regex.IsMatch(“要验证的字符串”, @"^\d+$")) --------------------编程问答-------------------- 谢谢老大!我就是不明白那3个“^+$”是什么意思?
另外您的那个\d是表示数字吧?
我是菜鸟,不好意思 --------------------编程问答-------------------- IsMatch(“要验证的字符串”, @"^[0-9]+$"))===^+$:这3个是什么意思呢?

楼主看来第一次用正则。。。。(跟1周前的我一样。呵呵)
^[0-9]+$意思是说,以[0-9]数字开始,^就是开始的标志,+是说中间的所有字符都是在0-9范围内,并且字符必须大于一个,$是结束标志,意思是说,以[0-9]的字符结尾。 --------------------编程问答-------------------- 用正则来判断
public static bool IsNumber(string str)
{
string pattern = "^([\\d]+)$";
if(str!=null)
{
if ( Regex.IsMatch(str, pattern)== true )
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}

} --------------------编程问答-------------------- 全是数字就返回true否则返回false --------------------编程问答-------------------- 正则表达式:
string sourceString = @"912345www";
string pattern = @"^\d+$";
System.Text.RegularExpressions.Match result = Regex.Match(sourceString,pattern,System.Text.RegularExpressions.RegexOptions.IgnoreCase);

if (result.Success)
{
//提示正确信息
//WL("正确:" + result.Groups[1].Value);//输出
WL("正确:" + result.Value);//输出
}
else
{
//提示错误信息
WL("错误!");//输出
}
  
-------------------------------------------
MSN:bdbox@hotmail.com 
请给我与您交流的机会 --------------------编程问答--------------------
/// <summary>
/// 判断是否是数字
/// </summary>
/// <param name="str">字符串</param>
/// <returns></returns>
private static bool IsNumber(string str) 
{
if (str == null || str.Length == 0)
return false;
System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
byte[] bytestr = ascii.GetBytes(str);
foreach(byte c in bytestr) 

if (c < 48 || c > 57) 

return false; 


return true; 
} --------------------编程问答-------------------- string yourStr = ...............;
if (Regex.IsMatch(yourStr, @"^\d+$"))
{
    MessageBox.Show("全数字");
}
else
{
    MessageBox.Show("非全数字");
}



正则表达式的确是个很好的办法

不过如果不追求效率,而数字又比较短的话。。试试这个

try{
int.Parse(string);
是数字
}catch{
不是数字
} --------------------编程问答-------------------- up --------------------编程问答-------------------- string str = "125487SSDf";
try
{
    Convert.ToInt32(str);
    Console.Write("全是数字");
}
catch
{
    Write("含别的字符");
} --------------------编程问答-------------------- 原来jhkemail已经说了呀。。

try{
int.Parse(string);
是数字
}catch{
不是数字
}
--------------------编程问答-------------------- 该回复被版主删除 --------------------编程问答-------------------- C#也可以用VB的东西的:
if (Microsoft.VisualBasic.Information.IsNumeric("asdasds"))
    MessageBox.Show("yes");
else
    MessageBox.Show("no");
哈哈~~

高手有空帮忙看下这个问题帖子!!谢谢!
http://community.csdn.net/Expert/topic/5684/5684900.xml?temp=.9734461 --------------------编程问答-------------------- 哈,用try 最實惠!
簡單,易用!
過去花幾行代易做图,現在花一行抵過去幾行! --------------------编程问答-------------------- \d表示数字
\D表示非数字
+表示1个或多个
^(组)$是正则的写法 --------------------编程问答-------------------- string str = "125487SSDf";
foreach(char x in str)
{
    if (char.IsDigit(x) != true)
    {
        Console.WriteLine("不是全数字!");
        break;
    }
} --------------------编程问答-------------------- 正则 --------------------编程问答-------------------- - -
try
{
int.Parse("乱七八糟数字")
}
catch
{
//.不全是数字
} --------------------编程问答-------------------- 不知道最快是指效率还是代码行数
try的效率不高因为有异常处理 --------------------编程问答-------------------- number.tryParser(XXX) --------------------编程问答-------------------- 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;
}

千万不要用抛出异常来判断,抛出异常需要消耗巨大的资源作为代价的 --------------------编程问答-------------------- 正则表达式最快。
"^[0-9]+$" --------------------编程问答-------------------- UP --------------------编程问答-------------------- try{}
catch{}
好象一般都用来防止有错误和异常而用的吧,现在用来判断 ^_^ --------------------编程问答-------------------- 方法真不少 --------------------编程问答-------------------- 对几种常见方法做了一下对比,楼主可以参考一下

http://www.cnblogs.com/lxcnn/archive/2007/08/02/839636.html --------------------编程问答-------------------- 唉,这个问题,用double强制转换该字符串,如果转换成功则是数字,如果有异常则不全是数字 --------------------编程问答-------------------- 上面方法, 大都是REGULAR EXPRESSION的應用, 您自己還是不明白, 去GOOGLE找一找吧! --------------------编程问答-------------------- in i=0;
if(int.TryParse("122www",out i))
{
//是数字
} --------------------编程问答-------------------- 学习了 --------------------编程问答--------------------
引用 23 楼 nattystyle 的回复:
string   str   =   "125487SSDf ";
foreach(char   x   in   str)
{
        if   (char.IsDigit(x)   !=   true)
        {
                Console.WriteLine( "不是全数字! ");
                break;
     ……


正解! --------------------编程问答--------------------
string s = "1234567";
public bool IsNumber(string s)
{
    foreach(char c in s)
    {
        if(c<'0' || c> '9') return false
    }
    return true;
}
--------------------编程问答--------------------

 int w= -1;
            string s = "101s";

            Int32.TryParse(s, out w);
            Console.WriteLine("result:{0}",w);

            Console.ReadLine();
--------------------编程问答-------------------- up....... --------------------编程问答-------------------- 学习zhong
--------------------编程问答--------------------

bool isNumber=true;
string value="12d50";
foreach(char c in value)
 if(!c.isNumber())
   isNumber=false;

 char可以判断是否是数字
char.isNumber();(应该是这样写,忘记了)


--------------------编程问答-------------------- 建议用正则 --------------------编程问答-------------------- 正则判断是否是为整数 --------------------编程问答--------------------         public bool IsNumber(string s)
        {
            foreach(char c in s.ToCharArray())
            {
                if (!char.IsDigit(c))
                {
                    return false;
                }
            }
            return true; //all is digital
        }
--------------------编程问答-------------------- 不好意思,还是写错了,应是使用char.IsNumber(c),43楼的已经说了。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,