【问题标题】:How to check if a String contains any letter from a to z? [duplicate]如何检查字符串是否包含从 a 到 z 的任何字母? [复制]
【发布时间】:2012-10-04 18:38:39
【问题描述】:

可能重复:
C# Regex: Checking for “a-z” and “A-Z”

我可以使用下面的代码:

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
}

但我想为了一个简单的目的需要太多的线路,我相信有一种方法更简单,我还没有掌握。

【问题讨论】:

  • stackoverflow.com/questions/6017778/… - 正则表达式正是您要找的。​​span>
  • 我投票重新提出这个问题,因为它与正则表达式没有严格的关系。
  • 我还认为这不是重复的。至少不是 C# Regex: Checking for “az” and “AZ” 的副本,因为这个问题是询问字符串是否包含任何字符 a-zA-Z 而另一个问题是询问字符串仅包含 a-zA-Z...

标签: c# windows string char


【解决方案1】:

用这个替换你的for loop

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

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

【讨论】:

  • 哦,对不起,我还有一个问题,如何不仅检测从 a 到 z 的字母,还检测所有符号?喜欢 。 , ! ? # $
  • 如果您必须处理非 a-z 字母(中文等),请小心使用此正则表达式
【解决方案2】:

怎么样:

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

【讨论】:

  • 注意:这会检查是否有任何不是字母的字符,它不会检查字符串中是否有字母。简单修复: bool result = !hello.Any(x => char.IsLetter(x));
  • 我很高兴这里有 LINQ 答案,所以我不必使用正则表达式。
  • 不应该!hello.Any(char.IsLetter); 也可以吗?
  • 如果字符串有新行 "\r" 或 "\n" 则返回 true
  • 非常适合我!
【解决方案3】:

为了最小的改变:

for(int i=0; i<str.Length; i++ )
   if(str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z')
      errorCount++;

您可以使用正则表达式,至少在速度不是问题并且您并不真正需要实际准确计数的情况下。

【讨论】:

    【解决方案4】:

    使用正则表达式 无需将其转换为 char 数组

    if(Regex.IsMatch("yourString",".*?[a-zA-Z].*?"))
    {
    errorCounter++;
    }
    

    【讨论】:

      【解决方案5】:

      你可以使用正则表达式:

      Regex.IsMatch(hello, @"^[a-zA-Z]+$");
      

      如果你不喜欢这样,你可以使用 LINQ:

      hello.All(Char.IsLetter);
      

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

      Char.IsLetter(character);
      

      【讨论】:

      • 对不起,只有当我整个字符串都是数字时它才会读取,如果我输入数字和字母它就不会检测到
      • 正确的正则表达式是Regex.IsMatch(hello, @"[a-zA-Z]");
      【解决方案6】:

      你可以找regular expression

      Regex.IsMatch(str, @"^[a-zA-Z]+$");
      

      【讨论】:

      • 我不敢相信你可以这么简单!
      • 也可以使用:(?i)^[a-z]+$,这里?i 使其不区分大小写。
      猜你喜欢
      • 2018-03-16
      • 2019-11-22
      • 2013-11-22
      • 2010-11-02
      • 2012-02-22
      • 2017-08-27
      • 2020-12-12
      • 2012-03-07
      相关资源
      最近更新 更多