Подтвердить что ты не робот

Как проверить, содержит ли строка любую букву от a до z?

Возможный дубликат:
С# Regex: проверка на "A-Z" и "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
}

но я полагаю, что это занимает слишком много строк для простой цели, я считаю, что есть намного более простой способ, который я еще не освоил.

4b9b3361

Ответ 1

Замените for loop следующим образом:

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

Не забудьте использовать класс Regex, вы должны using System.Text.RegularExpressions; в своем импортировании

Ответ 2

Как насчет:

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

Ответ 3

Вы можете использовать RegEx:

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

Если вам это не нравится, вы можете использовать LINQ:

hello.All(Char.IsLetter);

Или вы можете прокручивать символы и использовать isAlpha:

Char.IsLetter(character);

Ответ 5

При минимальном изменении:

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

Вы можете использовать регулярные выражения, по крайней мере, если скорость не является проблемой, и вам действительно не нужен фактический точный счет.

Ответ 6

Использовать регулярное выражение нет необходимости преобразовывать его в массив char

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