Rumah >Java >javaTutorial >Bagaimana untuk Mengeluarkan Tanda Diakritik daripada Rentetan Unicode di Java?

Bagaimana untuk Mengeluarkan Tanda Diakritik daripada Rentetan Unicode di Java?

Barbara Streisand
Barbara Streisandasal
2024-12-17 05:17:24951semak imbas

How to Remove Diacritical Marks from Unicode Strings in Java?

Mengalih keluar Tanda Diakritik daripada Aksara Unikod

Tanda diakritik, seperti tilde, umlaut dan circumflex, boleh mengubah suai sebutan dan ejaan aksara . Untuk memudahkan carian dan perbandingan, tanda ini mungkin perlu dibuang. Begini cara untuk mengalih keluar tanda diakritik daripada aksara Unikod dalam Java:

Menggunakan Borang Normalisasi NFD dan Ungkapan Biasa

Kaedah normalize(Normalizer.Form.NFD) menguraikan Unicode rentetan ke dalam aksara asasnya dan tanda diakritik. Dengan menggabungkan ini dengan ungkapan biasa yang sepadan dengan tanda diakritikal, anda boleh mengeluarkannya daripada rentetan.

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

Penggunaan Contoh:

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

Penyederhanaan Rentetan Dipertingkat

Untuk mengendalikan aksara khas bukan diakritik yang boleh menjejaskan carian dan perbandingan, pertimbangkan untuk menggunakan ImmutableMap Google dan pusingan pembersihan tambahan.

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

Penggunaan Contoh:

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

Dengan menggunakan teknik ini, anda boleh mengalih keluar tanda diakritik dan permudahkan rentetan untuk keupayaan carian dan perbandingan yang dipertingkatkan.

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Tanda Diakritik daripada Rentetan Unicode di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn