Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengalih keluar Aksen daripada Rentetan dalam JavaScript, Termasuk Keserasian IE6?

Bagaimana untuk Mengalih keluar Aksen daripada Rentetan dalam JavaScript, Termasuk Keserasian IE6?

DDD
DDDasal
2024-12-21 12:16:19775semak imbas

How to Remove Accents from Strings in JavaScript, Including IE6 Compatibility?

Mengalih keluar Aksen/Diakritik daripada Rentetan dalam JavaScript

Artikel ini mendalami teknik untuk mengalih keluar aksen atau diakritik daripada rentetan dalam JavaScript, menangani cabaran yang dihadapi dalam IE6 dengan ungkapan biasa.

Menggunakan ES2015/ES6 String.prototype.normalize()

ES2015/ES6 memperkenalkan kaedah String.prototype.normalize(), yang membolehkan pengalihan keluar diakritik. Contohnya:

const str = "Crème Brûlée";
const normalized = str.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
console.log(normalized); // Output: "Creme Brulee"

Perhatikan bahawa "NFD" digunakan untuk menguraikan gabungan grafem kepada yang ringkas, memudahkan penyingkiran diakritik.

Menggunakan Unicode Property Escapes

Pendekatan lain melibatkan penggunaan sifat Unicode melarikan diri:

const str = "Crème Brûlée";
const removed = str.normalize("NFD").replace(/\p{Diacritic}/gu, "");
console.log(removed); // Output: "Creme Brulee"

Untuk Tujuan Isih

Jika matlamatnya hanyalah mengisih, Intl.Collator boleh digunakan:

const c = new Intl.Collator();
const arr = ["creme brulee", "crème brûlée", ...];
arr.sort(c.compare);

Pertimbangan IE6

Dengan IE6, ungkapan biasa boleh bermasalah. Untuk menangani perkara ini, pendekatan yang mudah adalah dengan menggantikan aksara beraksen tertentu secara manual dengan aksara asas yang setara. Contohnya:

const accentsTidy = (str) => {
  return str
    .toLowerCase()
    .replace(/\s/g, "")
    .replace(/[àáâãäå]/g, "a")
    .replace(/æ/g, "ae")
    // ... and so on
    .replace(/\W/g, "");
};

Atas ialah kandungan terperinci Bagaimana untuk Mengalih keluar Aksen daripada Rentetan dalam JavaScript, Termasuk Keserasian IE6?. 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