繁体   English   中英

在不使用正则表达式的情况下检查特殊字符

[英]Check For Special Characters without using Regex

C#代码中的ima newbie,我需要在不使用regex的情况下验证特殊字符的帮助,有人可以帮助我吗?

即时通讯使用此代码的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);

更新:

既然你要 (空格):

textBox2.Text.All(c => Char.IsLetter(c) || c == ' ');

请注意,对于任何Unicode字母, Char.IsLetter都将返回true。 更严格的版本是:

textBox2.Text.All(c => (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c == ' '));

你明白了。 基本上,我们浏览所有字符,然后查看它是否在AZaz范围或空格中。

需要using System.Linq; 使用简单的循环也可以实现相同的目的。

我们将为您提供许多不同的方式。 例如,

  • 使用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码进行比较

如何在C#中获取字符串的ASCII值

检查它是否在大写和小写的ASCII码范围内

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM