关于c#:如何检查String是否包含从a到z的任何字母?

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));


将您的for loop替换为:

1
errorCounter = Regex.Matches(yourstring,@"[a-zA-Z]").Count;

记住使用Regex类,你必须在进口时使用using System.Text.RegularExpressions;类。


您可以使用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++;
}