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
Libérer: 2024-12-17 05:17:24
original
947 Les gens l'ont consulté

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("");
    }
}
Copier après la connexion

Exemple d'utilisation :

String withDiacritics = "Björń";
String withoutDiacritics = DiacriticRemover.removeDiacritics(withDiacritics);
System.out.println(withoutDiacritics); // Output: Bjorn
Copier après la connexion

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);
    }
}
Copier après la connexion

Exemple d'utilisation :

String withNonDiacritics = "Białystok";
String simplified = StringSimplifier.simplifiedString(withNonDiacritics);
System.out.println(simplified); // Output: Bialystok
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal