测试输入字符串是否包含数字值(或相反不是数字)的最有效方法是什么?我想我可以使用Double.Parse或正则表达式(见下文),但我想知道是否有一些内置的方法可以做到这一点,例如javascript NaN()或IsNumeric()(是VB,我不记得了吗?)。
Double.Parse
NaN()
IsNumeric()
public static bool IsNumeric(this string value) { return Regex.IsMatch(value, "^\\d+$"); }
这没有正则表达式开销
double myNum = 0; String testVar = "Not A Number"; if (Double.TryParse(testVar, out myNum)) { // it is a number } else { // it is not a number }
顺便说一句,除GUID明显之外,所有标准数据类型都支持TryParse。
更新 secretwep会显示值“ 2345”将作为数字通过上述测试。但是,如果您需要确保字符串中的所有字符都是数字,则应该采用另一种方法。
范例1 :
public Boolean IsNumber(String s) { Boolean value = true; foreach(Char c in s.ToCharArray()) { value = value && Char.IsDigit(c); } return value; }
或者,如果您想更加花哨
public Boolean IsNumber(String value) { return value.All(Char.IsDigit); }
更新2 (从@stackonfire处理空字符串或空字符串)
public Boolean IsNumber(String s) { Boolean value = true; if (s == String.Empty || s == null) { value=false; } else { foreach(Char c in s.ToCharArray()) { value = value && Char.IsDigit(c); } } return value; }