NaN 或 IsNumeric 在 C# 中的等价物是什么?

2023-12-11

测试输入字符串是否包含数值(或相反,不是数字)的最有效方法是什么?我想我可以用Double.Parse或正则表达式(见下文),但我想知道是否有一些内置方法可以做到这一点,例如 javascriptNaN() or 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。

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

update 2(来自 @stackonfire 处理 null 或空字符串)

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; 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NaN 或 IsNumeric 在 C# 中的等价物是什么? 的相关文章

随机推荐