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
Lepaskan: 2024-12-17 05:17:24
asal
947 orang telah melayarinya

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("");
    }
}
Salin selepas log masuk

Penggunaan Contoh:

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

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);
    }
}
Salin selepas log masuk

Penggunaan Contoh:

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

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan