可能重复:
C#正则expression式:检查“az”和“AZ”
我可以使用下面的代码:
String hello = "Hello1"; Char[] convertedString = String.ToCharArray(); int errorCounter = 0; for (int i = 0; i < CreateAccountPage_PasswordBox_Password.Password.Length; i++) { if (convertedString[i].Equals('a') || convertedString[i].Equals('A') ..... || convertedString[i].Equals('z') || convertedString[i].Equals('Z')) { errorCounter++; } } if(errorCounter > 0) { //do something }
但是我想这只是一个简单的目的而已,太多了,我相信有一种更简单的方式,我还没有掌握。
用这个替换你的for loop
:
errorCounter = Regex.Matches(yourstring,@"[a-zA-Z]").Count;
记得要使用Regex
类,你必须using System.Text.RegularExpressions;
在你的进口
关于什么:
//true if it doesn't contain letters bool result = hello.Any(x => !char.IsLetter(x));
您可以使用RegEx:
Regex.IsMatch(hello, @"^[a-zA-Z]+$");
如果你不喜欢,你可以使用LINQ:
hello.All(Char.IsLetter);
或者,您可以遍历字符,并使用isAlpha:
Char.IsLetter(character);
你可以寻找正则表达式
Regex.IsMatch(str, @"^[a-zA-Z]+$");
对于最小的变化:
for(int i=0; i<str.Length; i++ ) if(str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z') errorCount++;
你可以使用正则表达式,至少如果速度不是问题,你并不需要真正的确切数量。
使用正则表达式不需要将其转换为char数组
if(Regex.IsMatch("yourString",".*?[a-zA-Z].*?")) { errorCounter++; }