Pour éliminer les signes diacritiques (par exemple, tilde, tréma, etc.) des caractères Unicode, envisagez d'utiliser les algorithmes suivants :
En Java, utilisez les éléments suivants code :
public static final Pattern DIACRITICS_AND_FRIENDS = Pattern.compile("[\p{InCombiningDiacriticalMarks}\p{IsLm}\p{IsSk}\u0591-\u05C7]+"); private static String stripDiacritics(String str) { str = Normalizer.normalize(str, Normalizer.Form.NFD); str = DIACRITICS_AND_FRIENDS.matcher(str).replaceAll(""); return str; }
Exemple :
stripDiacritics("Björn") = Bjorn
Pour une solution plus complète, incluez une deuxième étape de nettoyage pour gérer les caractères spéciaux non diacritiques.
public static final char DEFAULT_REPLACE_CHAR = '-'; public static final String DEFAULT_REPLACE = String.valueOf(DEFAULT_REPLACE_CHAR); private static final ImmutableMap<String, String> NONDIACRITICS = ImmutableMap.<String, String>builder() // ... [List of non-diacritic characters] public static String simplifiedString(String orig) { String str = orig; if (str == null) { return null; } str = stripDiacritics(str); str = stripNonDiacritics(str); if (str.length() == 0) { // ... } return str.toLowerCase(); } // ... [Continued implementation]
Ces algorithmes suppriment efficacement signes diacritiques à des fins de recherche. Cependant, les caractères spéciaux non diacritiques, tels que le « ł » de Białegostok, nécessitent une manipulation supplémentaire. L'algorithme amélioré tente de remplacer ces caractères par leur équivalent le plus proche.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!