web-dev-qa-db-fra.com

Comment vérifier si une chaîne contient une lettre de a à z?

Duplicate possible:
Regex C #: Recherche de “a-z” et “A-Z”

Je pourrais juste utiliser le code ci-dessous:

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
}

mais je suppose que cela prend trop de ligne pour un but simple, je crois qu'il existe un moyen beaucoup plus simple, celui que je n'ai pas encore maîtrisé.

36
Hendra Anggrian

Remplacez votre for loop par ça :

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

N'oubliez pas d'utiliser Regex class, vous devez using System.Text.RegularExpressions; dans votre import

57
Ta Duy Anh

Qu'en est-il de:

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

Vous pouvez utiliser RegEx:

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

Si vous n'aimez pas cela, vous pouvez utiliser LINQ:

hello.All(Char.IsLetter);

Vous pouvez également parcourir les caractères et utiliser isAlpha:

Char.IsLetter(character);
16
Kirby

Vous pouvez chercher expression régulière

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

Pour un changement minimal:

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

Vous pouvez utiliser des expressions régulières, du moins si la vitesse ne pose pas de problème et si vous n'avez pas vraiment besoin du nombre exact.

1
perh

Utilisez une expression régulière sans avoir besoin de le convertir en tableau de caractères

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