检查不使用正则表达式的特殊字符
本文关键字:特殊字符 正则表达式 检查 | 更新日期: 2023-09-27 18:05:19
我是c#代码的新手,我需要帮助验证特殊字符而不使用正则表达式,有人能帮助我吗?
我正在使用此代码ATM,并希望使其不需要正则表达式也能工作
else if (Regex.IsMatch(textBox2.Text, "^[a-zA-Z ]+$")==false)
{
MessageBox.Show("Name may not contain any special characters");
}
谢谢!
regex解决方案并不是很糟糕,但是如果禁止使用regex,您可以执行以下操作:
textBox2.Text.All(Char.IsLetter);
更新:既然你也想要 (space):
textBox2.Text.All(c => Char.IsLetter(c) || c == ' ');
注意A-Z
对于任何Unicode字母都将返回true。更严格的版本是:
textBox2.Text.All(c => (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c == ' '));
你懂的。基本上,我们遍历所有字符并查看它是否在a-z
或using System.Linq;
范围或空格中。
需要CC_5。使用一个简单的循环也可以达到同样的效果。
你可以用很多不同的方法。例如,
-
一个积极的测试,使用Linq使事情变得美好和声明性:
public bool isValid( string s ) { Func<char,bool> valid = c => { c == ' ' || ( c >= 'a' && c <= 'z' ) || ( c >= 'A' || c <= 'Z' ) } ; return s.All(valid) ; }
-
使用Linq进行阴性测试也是如此
public bool isInvalid( string s ) { Func<char,bool> valid = c => { c == ' ' || ( c >= 'a' && c <= 'z' ) || ( c >= 'A' || c <= 'Z' ) } ; return s.Any(!valid) ; }
-
Linq不一定是最快的方法,所以你可以简单地迭代字符串,老派:
public bool isValid( string s ) { bool valid = true ; for ( int i = 0 ; valid && i < s.Length ; ++i ) { char c = s[i] ; valid = c == ' ' || ( c >= 'a' && c <= 'z' ) || ( c >= 'A' && c <= 'Z' ) ; } return valid ; }
您可以遍历字符串并将字符与ascii码进行比较
如何获取字符串的ASCII值
检查是否在大写和小写ascii码范围内