Heim > Java > javaLernprogramm > Wie entferne ich diakritische Zeichen aus Unicode-Zeichenfolgen in Java?

Wie entferne ich diakritische Zeichen aus Unicode-Zeichenfolgen in Java?

Barbara Streisand
Freigeben: 2024-12-17 05:17:24
Original
946 Leute haben es durchsucht

How to Remove Diacritical Marks from Unicode Strings in Java?

Diakritische Zeichen aus Unicode-Zeichen entfernen

Diakritische Zeichen wie Tilde, Umlaut und Zirkumflex können die Aussprache und Schreibweise von Zeichen ändern . Um die Suche und den Vergleich zu erleichtern, kann es erforderlich sein, diese Markierungen zu entfernen. So entfernen Sie diakritische Zeichen aus Unicode-Zeichen in Java:

Verwenden der Normalisierungsform NFD und regulärer Ausdrücke

Die Methode normalize(Normalizer.Form.NFD) zerlegt einen Unicode Zeichenfolge in ihre Grundzeichen und diakritischen Zeichen zerlegen. Indem Sie dies mit einem regulären Ausdruck kombinieren, der diakritische Zeichen übereinstimmt, können Sie diese aus der Zeichenfolge entfernen.

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("");
    }
}
Nach dem Login kopieren

Beispielverwendung:

String withDiacritics = "Björń";
String withoutDiacritics = DiacriticRemover.removeDiacritics(withDiacritics);
System.out.println(withoutDiacritics); // Output: Bjorn
Nach dem Login kopieren

Erweiterte Zeichenfolgenvereinfachung

Um nichtdiakritische Sonderzeichen zu verarbeiten, die sich auf Suche und Vergleich auswirken können, sollten Sie die Verwendung von Google in Betracht ziehen ImmutableMap und eine zusätzliche Bereinigungsrunde.

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);
    }
}
Nach dem Login kopieren

Beispielverwendung:

String withNonDiacritics = "Białystok";
String simplified = StringSimplifier.simplifiedString(withNonDiacritics);
System.out.println(simplified); // Output: Bialystok
Nach dem Login kopieren

Mit diesen Techniken können Sie diakritische Zeichen entfernen und Zeichenfolgen vereinfachen, um die Suche zu verbessern und Vergleichsmöglichkeiten.

Das obige ist der detaillierte Inhalt vonWie entferne ich diakritische Zeichen aus Unicode-Zeichenfolgen in Java?. 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