Regarder si une chaine de caractère est valide

Signaler
Messages postés
2
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
26 janvier 2006
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
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

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Je pense que l'utilisation d'une expression reguliere serait plutot conseillée dans ce cas la


Mx
MVP C#
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
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#
Messages postés
2
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
26 janvier 2006

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;

}
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
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#