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

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

6 réponses

Répondre au sujet
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 1 mars 2007 à 10:37
+3
Utile
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-
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Bidou
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 1 mars 2007 à 07:53
0
Utile
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 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 1 mars 2007 à 08:33
0
Utile
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 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 1 mars 2007 à 08:54
0
Utile
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 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 1 mars 2007 à 10:07
0
Utile
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 219 Messages postés jeudi 6 juillet 2006Date d'inscription 7 septembre 2009 Dernière intervention - 1 mars 2007 à 17:43
0
Utile
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.