Heim > Java > javaLernprogramm > Wie kann ich diakritische Zeichen effizient aus Unicode-Zeichenfolgen in Java entfernen?

Wie kann ich diakritische Zeichen effizient aus Unicode-Zeichenfolgen in Java entfernen?

Barbara Streisand
Freigeben: 2024-12-01 15:36:14
Original
247 Leute haben es durchsucht

How Can I Efficiently Remove Diacritical Marks from Unicode Strings in Java?

Diakritische Zeichen aus Unicode-Zeichen entfernen

Problembeschreibung

Diakritische Zeichen wie Tilden, Zirkumflexe, Caretzeichen, Umlaute und Carons können sich ändern die Aussprache von Schriftzeichen. Um eine effiziente Suche und einen effizienten Vergleich zu ermöglichen, kann es erforderlich sein, diese Markierungen zu entfernen und das „einfache“ Gegenstück der Zeichen zu erhalten.

Lösung

Verwendung von Unicode-Normalisierung und regulären Ausdrücken, die folgende Java-Implementierung Entfernt effektiv diakritische Zeichen:

import java.text.Normalizer;
import java.util.regex.Pattern;

public class DiacriticStripper {

    private static final Pattern DIACRITICS_PATTERN = Pattern.compile("[\p{InCombiningDiacriticalMarks}\p{IsLm}\p{IsSk}\u0591-\u05C7]+");

    public static String stripDiacritics(String input) {
        String normalizedInput = Normalizer.normalize(input, Normalizer.Form.NFD);
        return DIACRITICS_PATTERN.matcher(normalizedInput).replaceAll("");
    }

}
Nach dem Login kopieren

Zum Beispiel die Eingabezeichenfolge „ńǹňñṅņṇṋṉ̈ɲƞᶇɳȵ“ würde in „n“ umgewandelt werden.

Erweiterte String-Vereinfachung

Die bereitgestellte Lösung befasst sich speziell mit diakritischen Zeichen. Wenn zusätzliche nicht-diakritische Sonderzeichen verarbeitet werden müssen, kann eine umfassendere Methode zur Zeichenfolgenvereinfachung eingesetzt werden:

import java.text.Normalizer;
import java.util.regex.Pattern;

public class StringSimplifier {

    private static final Pattern DIACRITICS_PATTERN = Pattern.compile("[\p{InCombiningDiacriticalMarks}\p{IsLm}\p{IsSk}\u0591-\u05C7]+");

    public static String simplify(String input) {
        String normalizedInput = Normalizer.normalize(input, Normalizer.Form.NFD);
        String diacriticStripped = DIACRITICS_PATTERN.matcher(normalizedInput).replaceAll("");
        // Replace additional non-diacritic special characters using a custom mapping
        // ...
        return simplifiedString.toLowerCase();
    }

}
Nach dem Login kopieren

Durch die Berücksichtigung eines größeren Zeichenbereichs bietet diese Methode einen umfassenderen Zeichenfolgenvereinfachungsprozess.

Das obige ist der detaillierte Inhalt vonWie kann ich diakritische Zeichen effizient aus Unicode-Zeichenfolgen in Java entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage