Maison >Java >javaDidacticiel >Comment supprimer les signes diacritiques des chaînes Unicode en Java ?

Comment supprimer les signes diacritiques des chaînes Unicode en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-17 05:17:24951parcourir

How to Remove Diacritical Marks from Unicode Strings in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn