这是一个不使用正则表达式的解决方案。
private static bool IsNumberOrGivenString(string number, string text, CultureInfo culture)
{
double result;
if (double.TryParse(number, NumberStyles.Float, culture, out result))
{
return true;
}
return number.Equals(text, StringComparison.OrdinalIgnoreCase);
}
private static bool IsNumberOrGivenString(string number, string text)
{
return IsNumberOrGivenString(number, text, CultureInfo.InvariantCulture);
}
使用示例:
Console.WriteLine(IsNumberOrGivenString("898", "all")); // true
Console.WriteLine(IsNumberOrGivenString("all", "all")); // true
Console.WriteLine(IsNumberOrGivenString("whatever", "all")); // false
Console.WriteLine(IsNumberOrGivenString("898,0", "all", CultureInfo.GetCultureInfo("sv-SE"))); // true
Console.WriteLine(IsNumberOrGivenString("898,0", "all", CultureInfo.GetCultureInfo("en-US"))); // false
与使用正则表达式相比,此代码的优点是它(可以)以本地化方式运行,使用任何使用的十进制符号。如果有的话,它也会失败该数字,比如说.
当该字符不是有效的小数点分隔符时。
由于字符串比较忽略大小写,因此它也将匹配单词“all”,无论它是“all”、“All”、“aLl”还是任何其他大小写字母的组合。