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é.
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
Qu'en est-il de:
//true if it doesn't contain letters
bool result = hello.Any(x => !char.IsLetter(x));
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);
Vous pouvez chercher expression régulière
Regex.IsMatch(str, @"^[a-zA-Z]+$");
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.
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++;
}