如何检查String是否包含从a到z的任何字母?

Hen*_*ian 39 c# windows string char

可能重复:
C#Regex:检查"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
}
Run Code Online (Sandbox Code Playgroud)

但是我想这只是为了一个简单的目的需要太多的线,我相信有一种方法更加简单,我尚未掌握的方式.

Oma*_*mar 74

关于什么:

//true if it doesn't contain letters
bool result = hello.Any(x => !char.IsLetter(x));
Run Code Online (Sandbox Code Playgroud)

  • 注意:这将检查是否有任何字母不是字母,它不会检查字符串中是否包含字母.简单修复:bool result =!hello.Any(x => char.IsLetter(x)); (10认同)
  • 我很高兴这里有一个LINQ答案,所以我不必使用正则表达式. (6认同)
  • 简短又甜蜜. (2认同)
  • 不应该`!hello.Any(char.IsLetter);` 也能工作吗? (2认同)

小智 59

替换你for loop的:

errorCounter = Regex.Matches(yourstring,@"[a-zA-Z]").Count;
Run Code Online (Sandbox Code Playgroud)

记得要使用Regex类,你必须using System.Text.RegularExpressions;在导入


Kir*_*rby 17

您可以使用RegEx:

Regex.IsMatch(hello, @"^[a-zA-Z]+$");
Run Code Online (Sandbox Code Playgroud)

如果您不喜欢,可以使用LINQ:

hello.All(Char.IsLetter);
Run Code Online (Sandbox Code Playgroud)

或者,您可以遍历字符,并使用isAlpha:

Char.IsLetter(character);
Run Code Online (Sandbox Code Playgroud)


San*_*huk 5

您可以寻找正则表达式

Regex.IsMatch(str, @"^[a-zA-Z]+$");
Run Code Online (Sandbox Code Playgroud)

  • 取而代之的是,也可以使用:((i)^ [az] + $`,这里的“ i”使它不区分大小写。 (2认同)