How to check if a String contains any letter from a to z?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
C# Regex: Checking for"a-z" and"A-Z"
我可以使用下面的代码:
1 2 3 4 5 6 7 8 9 10 11 12 | 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 } |
但我想,仅仅为了一个简单的目的,这需要太多的线条,我相信还有一种更简单的方法,那就是我还没有掌握的方法。
如何:
1 2 | //true if it doesn't contain letters bool result = hello.Any(x => !char.IsLetter(x)); |
将您的
1 | errorCounter = Regex.Matches(yourstring,@"[a-zA-Z]").Count; |
记住使用
您可以使用regex:
1 | Regex.IsMatch(hello, @"^[a-zA-Z]+$"); |
如果您不喜欢,可以使用LINQ:
1 | hello.All(Char.IsLetter); |
或者,您可以循环使用字符,并使用isalpha:
1 | Char.IsLetter(character); |
可以查找正则表达式
1 | Regex.IsMatch(str, @"^[a-zA-Z]+$"); |
对于最小变化:
1 2 3 | for(int i=0; i<str.Length; i++ ) if(str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z') errorCount++; |
你可以使用正则表达式,至少如果速度不是问题,你不需要实际的精确计数。
使用正则表达式不需要将其转换为char数组
1 2 3 4 | if(Regex.IsMatch("yourString",".*?[a-zA-Z].*?")) { errorCounter++; } |