Supprimer les accents d’une phrase avec Java6

Supprimer les accents d’une phrase avec Java6

Au cours d’un développement, il arrive qu’il soit nécessaire de supprimer les accents d’une chaine de caractère. S’il faut développer soit-même la solution autant dire que la tâche peut se révéler complexe si on souhaite faire les choses bien.

Heureusement Java propose une solution élégante directement disponible dans le JDK depuis la version 6. Il s’agit de la classe java.text.Normalizer.

La classe Normalizer permet de décomposer les caractères composites en caractères unicode. En clair, cela signifie qu’un caractère accentué est divisé en 2 caractères: le 1er non accentué, puis un second correspondant à l’accent. Le caractère: ‘ê’ sera ainsi décomposé comme suit: ‘e’, ‘^’.

Le premier exemple ci-dessous permet de normaliser une chaîne de caractère selon la norme définie à l’adresse suivante: http://www.unicode.org/reports/tr15/tr15-23.html#Decomposition

public static String normalize(String input) {
  return Normalizer.normalize(input, Normalizer.Form.NFD);
}

Le deuxième exemple, ci-dessous, permet de normaliser la chaîne de caractères, puis de supprimer l’ensemble des caractères représentant les accents des caractères décomposés:

public static String stripAccents(String input) {
  return Normalizer.normalize(input, Normalizer.Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}

Comment souventen Java, mieux vaut ne pas essayer de refaire la roue, le JDK offre souvent une solution efficace, et de nombreuses librairies permettent souvent de répondre à vos besoins permettant ainsi de se concentrer un peu plus sur l’objectif de votre développement et d’éviter de perdre du temps sur des détails techniques.

Leave a Reply