Bonjour,
Je souhaite, dans un String, ne garder que les caractères alphanumériques.
Y'a t-il un moyen simple de le faire ? Avec des expressions régulières ?
Merci.
Version imprimable
Bonjour,
Je souhaite, dans un String, ne garder que les caractères alphanumériques.
Y'a t-il un moyen simple de le faire ? Avec des expressions régulières ?
Merci.
Ouaip, une expression régulière est la plus simple façon de faire
Je te donne un exemple que tu peux adapter
La regexp dit que tu remplaces tous les caractères qui ne sont pas (^) dans les plages a-z, A-Z, 0-9 par une chaine videCode:
1
2 String cleanString = dirtyString.replaceAll("[^a-zA-Z0-9]", "");
Sinon, y'a plus court :
Ca remplace tous les caractères qui ne sont pas considérés comme des mots (exactement la même chose que plus haut)Code:
1
2 String cleanString = dirtyString.replaceAll("\\W", "");
d'accord merci :
Code:String cleanString = dirtyString.replaceAll("[^0-9]", "");
Pas tout à fait, car \w contient également le underscore. Donc l'équivalent de [^a-zA-Z0-9] serait plutôt [\\W_].Citation:
Envoyé par eulbobo
Autre chose, quand on souhaite remplacer des caractères par une chaîne vide, autant offrir la possibilité d'en remplacer plusieurs d'un coup en ajoutant un quantificateur, ce qui réduit le nombre de remplacements nécessaires: [^a-zA-Z0-9]+Là, tu enlèves aussi les lettres (alphanumérique désigne aussi bien les chiffres que les lettres), mais peut-être que c'est ce que tu souhaitais faire? Et pour être totalement rigoureux tu aurais dû préciser que tu souhaitais te limiter aux chiffres de la table ascii.Citation:
Envoyé par CliffeCSTL