Maison >Java >javaDidacticiel >Comment supprimer les signes diacritiques des chaînes Unicode en Java ?
Suppression des signes diacritiques des caractères Unicode
Les signes diacritiques, tels que le tilde, le tréma et le circonflexe, peuvent modifier la prononciation et l'orthographe des caractères. . Pour faciliter la recherche et la comparaison, il peut être nécessaire de supprimer ces marques. Voici comment supprimer les signes diacritiques des caractères Unicode en Java :
Utilisation du formulaire de normalisation NFD et des expressions régulières
La méthode normalize(Normalizer.Form.NFD) décompose un Unicode chaîne dans ses caractères de base et ses signes diacritiques. En combinant cela avec une expression régulière qui correspond aux signes diacritiques, vous pouvez les supprimer de la chaîne.
import java.util.regex.Pattern; public class DiacriticRemover { public static final Pattern DIACRITICS_PATTERN = Pattern.compile("[\p{InCombiningDiacriticalMarks}]"); public static String removeDiacritics(String str) { return DIACRITICS_PATTERN.matcher(str).replaceAll(""); } }
Exemple d'utilisation :
String withDiacritics = "Björń"; String withoutDiacritics = DiacriticRemover.removeDiacritics(withDiacritics); System.out.println(withoutDiacritics); // Output: Bjorn
Simplification améliorée des chaînes
Pour gérer les caractères spéciaux non diacritiques pouvant affecter la recherche et la comparaison, envisagez d'utiliser l'outil de recherche de Google. ImmutableMap et un cycle de nettoyage supplémentaire.
import com.google.common.collect.ImmutableMap; public class StringSimplifier { private static final ImmutableMap<String, String> NONDIACRITICS = ImmutableMap.<String, String>builder() // ... (define replacements here) .build(); public static String simplifiedString(String str) { return NONDIACRITICS.entrySet().stream() .reduce(str, (s, entry) -> s.replaceAll(entry.getKey(), entry.getValue()), String::concat); } }
Exemple d'utilisation :
String withNonDiacritics = "Białystok"; String simplified = StringSimplifier.simplifiedString(withNonDiacritics); System.out.println(simplified); // Output: Bialystok
En utilisant ces techniques, vous pouvez supprimer les signes diacritiques et simplifier les chaînes pour une recherche améliorée. et capacités de comparaison.
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!