Rechercher la présence de caractères speciaux [Résolu]

cs_Yxion
Messages postés
219
Date d'inscription
jeudi 6 juillet 2006
Dernière intervention
7 septembre 2009
- 1 mars 2007 à 06:06 - Dernière réponse : cs_Yxion
Messages postés
219
Date d'inscription
jeudi 6 juillet 2006
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.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_Bidou
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 1 mars 2007 à 10:37
3
Merci
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-

Merci cs_Bidou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cs_Bidou
SharpMao
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
- 1 mars 2007 à 07:53
0
Merci
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
Commenter la réponse de SharpMao
cs_Bidou
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 1 mars 2007 à 08:33
0
Merci
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-
Commenter la réponse de cs_Bidou
SharpMao
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
- 1 mars 2007 à 08:54
0
Merci
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
Commenter la réponse de SharpMao
cs_Bidou
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 1 mars 2007 à 10:07
0
Merci
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-
Commenter la réponse de cs_Bidou
cs_Yxion
Messages postés
219
Date d'inscription
jeudi 6 juillet 2006
Dernière intervention
7 septembre 2009
- 1 mars 2007 à 17:43
0
Merci
Merci... la dernière solution est celle que je voulais adopter, je croyais qu'il existait un genre de IsLetter pour les chaine.
Commenter la réponse de cs_Yxion

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.