Alih Keluar Aksen/Diakritik dalam Rentetan dalam JavaScript
Mengalih keluar aksara beraksen daripada rentetan boleh menjadi tugas yang berguna untuk pemprosesan teks dan analisis data. Dalam kod yang disediakan, fungsi accentsTidy cuba mengalih keluar aksen menggunakan ungkapan biasa. Walau bagaimanapun, pendekatan ini mungkin tidak cekap atau boleh dipercayai, terutamanya dalam pelayar lama seperti IE6.
Penyelesaian ES2015/ES6
Penyelesaian yang lebih moden dan cekap ialah menggunakan Kaedah ES2015/ES6 String.prototype.normalize(). Kaedah ini menukar rentetan kepada bentuk ternormal Unicode. Dengan menggunakan bentuk "NFD", yang menguraikan gabungan grafem menjadi aksara asasnya dan menggabungkan tanda, mengalih keluar diakritik menjadi lebih mudah. Berikut ialah contoh:
const str = "Crème Brûlée"; str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); // "Creme Brulee"
Ungkapan biasa sepadan dengan julat Unikod U 0300 → U 036F, yang merangkumi pelbagai tanda diakritik. Bentuk biasa Unicode lain seperti "NFKD" boleh digunakan untuk menormalkan aksara seperti uFB01 (fi) secara berbeza.
Menggunakan Unicode Property Escapes
ES2018 memperkenalkan Unicode property escapes, menyediakan cara yang lebih ringkas untuk membuang diakritik:
str.normalize("NFD").replace(/\p{Diacritic}/gu, ""); // "Creme Brulee"
Escape ini sepadan dengan semua aksara dengan sifat Unicode "Diacritic".
Sebagai alternatif: Isih
Jika matlamatnya adalah untuk menyusun rentetan dengan aksen, objek Intl.Collator boleh digunakan. Ia menyokong rentetan pengisihan berdasarkan susunan kanonik Unicode mereka, yang mengabaikan diakritik. Berikut ialah contoh:
const c = new Intl.Collator(); ["creme brulee", "crème brûlée", "crame brulai", "crome brouillé", "creme brulay", "creme brulfé", "creme bruléa"].sort(c.compare); // ['crame brulai', 'creme brulay', 'creme bruléa', 'creme brulee', 'crème brûlée', 'creme brulfé', 'crome brouillé']
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Aksen dengan Cekap daripada Rentetan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!