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
Barbara StreisandOriginal
2024-12-17 05:17:24951Durchsuche

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("");
    }
}

Beispielverwendung:

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

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);
    }
}

Beispielverwendung:

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

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!

Stellungnahme:
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