Rechercher la présence de caractères speciaux

Résolu
cs_Yxion
Messages postés
219
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
7 septembre 2009
- 1 mars 2007 à 06:06
cs_Yxion
Messages postés
219
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
7 septembre 2009
- 1 mars 2007 à 17:43
Salut tous le monde,

Avant de réinventer la roue, je voulais savoir s'il existait un méthode pertant de dire si oui ou non une chaine de caractères contient des caractères spéciaux, pour valider des chaines contenant des caractères de a-z et A-Z... rien d'autre, je ne veux ni remplacer, ni supprimer, juste valider une chaine de caractères... je cherche une méthode fesant cela, mais je trouve pas, je sans doute au mauvais endroit, et je suis sur d'avoir croisé ca un jour...

Merci.

6 réponses

cs_Bidou
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
1 mars 2007 à 10:37
Pour être plus complet:

bool ok =
true;

foreach (
char c
in myString)
{
  
if (c < 65 || c > 122 && (c > 90 || c < 97))
   {
      ok =
false;
     
break;
   }
}

<hr />
-Blog-
3
SharpMao
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
67
1 mars 2007 à 07:53
Hello,

Je ne suis de loin pas un spécialiste des expressions régulières, mais à mon avis c'est le moyen le plus simple d'atteindre ton but sans parcourir la chaîne.

using

System.Text.RegularExpressions;

....

Regex reg = newRegex("^[a-zA-Z]*$"
);
if
(reg.IsMatch(tbx_File.Text))

{}
else
{}

Pour une petite explication :

[a-zA-Z] donne la liste des charactères autorisés
* indique que ces charactère peuvent être présent de 0 à N fois.
^ et $ indiquent respectivement le début et la fin de la chaîne de charactères

Amicalement, SharpMao
0
cs_Bidou
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
1 mars 2007 à 08:33
Si c'est juste pour savoir combien y'a de caractères qui ne sont pas des lettres, une autre solution (qui sera peut-être plus rapide à l'exécution qu'une Regex) c'est d'itérer sur chaque caractère de la chaîne et d'appeler la méthode char.IsLetter. On a donc qqch comme:

bool ok = true;
foreach(char c in myString)
{
   if(!char.IsLetter(c)) { ok = false; break; }
}

<hr />
-Blog-
0
SharpMao
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
67
1 mars 2007 à 08:54
Hello,

Si j'ai bien compris sa question, il veut valider des chaines ne contenant que a-zA-Z, isLetter est vrai avec un charactère accentué aussi, ce qu'il aimerait éviter.

Amicalement, SharpMao
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
1 mars 2007 à 10:07
Ha, bah dans ce cas il suffit de changer légèrement le teste:

c > 65 && c < xx (puis la même chose pour les majuscule)

<hr />
-Blog-
0
cs_Yxion
Messages postés
219
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
7 septembre 2009

1 mars 2007 à 17:43
Merci... la dernière solution est celle que je voulais adopter, je croyais qu'il existait un genre de IsLetter pour les chaine.
0