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.
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(""); } }
Sebagai contoh, rentetan input "ńǹňñṅņṇṋṉ̈ɲƞᶇɳȵ" akan diubah menjadi "n".
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(); } }
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!