Regarder si une chaine de caractère est valide

alex_speed Messages postés 2 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 26 janvier 2006 - 26 janv. 2006 à 13:29
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 26 janv. 2006 à 21:45
Bonjour,



J'ai essayé de faire une fonction qui regarde si la chaine de caractères est valide ou non.



Les caractères valides sont : [A-Z], [a-z], é, ', è, ç, à, î, ï, ù et espace.



Voici la fonction :



protected bool IsNameInvalid(string name)

{

//if (name[1] == ' ' || name[name.Length - 1] == ' ')

// return true;



foreach (Char c in name.ToCharArray())

{


if (c < 'A' || (c > 'Z' && c < 'a') || c > 'z'


|| c != 'à' || c != 'á' || c != 'é' || c != 'è'


|| c != 'ê' || c != 'ç' || c != 'ù' || c != 'î'


|| c != ' ' || c != '\'')

return true;

}

return false;

}



Merci d'avance.

4 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
26 janv. 2006 à 15:03
Je pense que l'utilisation d'une expression reguliere serait plutot conseillée dans ce cas la


Mx
MVP C#
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
26 janv. 2006 à 15:17
Je dirais comme pattern : ^[a-zA-Zé'èçàîïù ]*$
Mais je suis tres tres loin d'etre un expert en regex, donc il y a peut-etre des failles

Mx
MVP C#
0
alex_speed Messages postés 2 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 26 janvier 2006
26 janv. 2006 à 21:41
Merci, mais je connais pas comment ca marche, cependant j'ai réussi à le faire fonctionner comme ceci :



protected static bool IsNameInvalid(string name)

{

foreach (char c in name.ToCharArray())

{


if ((c >= 'A' && c <= 'Z')


|| (c >= 'a' && c <= 'z')

|| c == 'à'

|| c == 'á'

|| c == 'é'

|| c == 'è'

|| c == 'ê'

|| c == 'ç'

|| c == 'ù'

|| c == 'î'

|| c == ' '

|| c == '\'')

{

continue;

}

return true;

}

return false;

}
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
26 janv. 2006 à 21:45
Je dirais (Mais a tester) :


<HR>
using System.Text.RegularExpressions;

...

public
bool ControlString(
string str)
{
Regex reg =
new Regex(
"^[a-zA-Zé'èçàîïù ]*$");

if (reg.IsMatch(str))

return
true;

return
false;
}

<HR>

Mx
MVP C#
0
Rejoignez-nous