如何最快判断字符串“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))
{
//是数字
} --------------------编程问答-------------------- 学习了 --------------------编程问答--------------------
正解! --------------------编程问答--------------------
string s = "1234567";--------------------编程问答--------------------
public bool IsNumber(string s)
{
foreach(char c in s)
{
if(c<'0' || c> '9') return false
}
return true;
}
--------------------编程问答-------------------- up....... --------------------编程问答-------------------- 学习zhong
int w= -1;
string s = "101s";
Int32.TryParse(s, out w);
Console.WriteLine("result:{0}",w);
Console.ReadLine();
--------------------编程问答--------------------
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#