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

Comment puis-je supprimer efficacement les signes diacritiques des chaînes Unicode en Java ?

Barbara Streisand
Libérer: 2024-12-11 01:23:10
original
552 Les gens l'ont consulté

How Can I Efficiently Remove Diacritics from Unicode Strings in Java?

Supprimer les signes diacritiques des caractères Unicode

Pour éliminer les signes diacritiques (par exemple, tilde, tréma, etc.) des caractères Unicode, envisagez d'utiliser les algorithmes suivants :

Algorithme Java

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

Exemple :

stripDiacritics("Björn")  = Bjorn
Copier après la connexion

Algorithme amélioré

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]
Copier après la connexion

Applicabilité et limitations

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!

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