Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Mengeluarkan Tanda Diakritik dengan Cekap daripada Rentetan Unicode di Java?

Bagaimanakah Saya Boleh Mengeluarkan Tanda Diakritik dengan Cekap daripada Rentetan Unicode di Java?

Barbara Streisand
Lepaskan: 2024-12-01 15:36:14
asal
251 orang telah melayarinya

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

Mengalih keluar Tanda Diakritik daripada Aksara Unikod

Penerangan Masalah

Tanda diakritik, seperti tildes, circumflexes, tanda tanda, umlaut dan caron, boleh mengubah sebutan aksara. Untuk memudahkan carian dan perbandingan yang cekap, mungkin perlu untuk mengalih keluar tanda ini dan mendapatkan pasangan "mudah" bagi aksara.

Penyelesaian

Menggunakan normalisasi Unikod dan ungkapan biasa, pelaksanaan Java berikut berkesan membuang tanda diakritik:

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

}
Salin selepas log masuk

Sebagai contoh, rentetan input "ńǹňñṅņṇṋṉ̈ɲƞᶇɳȵ" akan diubah menjadi "n".

Pemudahan Rentetan Lanjutan

Penyelesaian yang disediakan menangani tanda diakritikal secara khusus. Jika aksara khas bukan diakritik tambahan perlu dikendalikan, kaedah penyederhanaan rentetan yang lebih komprehensif boleh digunakan:

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

}
Salin selepas log masuk

Dengan mempertimbangkan julat aksara yang lebih luas, kaedah ini menyediakan proses penyederhanaan rentetan yang lebih komprehensif.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Tanda Diakritik dengan Cekap 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