我有一个例如“123a * a712”的序列,它是有效的。 我想确保只有3个字符不是数字,因为4+会使它无效。
几个例子:
“56 + 33” - 有效(空格也是一个字符)
“56 + 33 + 6” - 无效(超过3个非数字字符)
“错误” - 无效
“1234” - 有效
谢谢!
答案 0 :(得分:3)
无需使用RegEx
bool IsValid = "123a*a712".Count(x => !char.IsDigit(x)) < 4;
答案 1 :(得分:3)
答案 2 :(得分:1)
我想确保只有3个字符不是 数字,因为4+会使它无效。
public static int countNonDigit(string str) {
return (str.Length - str.Count(char.isDigit))
}
if (countNonDigit(str) >= 4) {
// not valid
}
修改强>
刚刚意识到,使用str.Count(!char.isDigit);
答案 3 :(得分:0)
使用帮助者:
public static class String
{
public static bool containsAtLeastXNonDigit(string s, int nbOfDigit)
{
return s.Count(!char.IsDigit) >= nbOfDigit;
}
}
并使用它:String.containsAtLeastXNonDigit("ToTest", 4);