测试输入字符串是否包含数字值(或相反不是数字)的最有效方法是什么?我想我可以使用Double.Parse或正则表达式(见下文),但是我想知道是否有一些内置的方法可以做到这一点,例如javascript的NaN()IsNumeric()(是VB,我不记得了吗?)。

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

关于c# - NaN或IsNumeric的C#等效项是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/437882/

10-09 02:00