从 JavaScript 中的字符串中删除重音符号/变音符号
本文深入研究了从 JavaScript 中的字符串中删除重音符号或变音符号的技术,解决了IE6 中正则表达式面临的挑战。
使用ES2015/ES6 String.prototype.normalize()
ES2015/ES6 引入了 String.prototype.normalize() 方法,该方法可以删除变音符号。例如:
const str = "Crème Brûlée"; const normalized = str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); console.log(normalized); // Output: "Creme Brulee"
请注意,“NFD”用于将组合字素分解为简单的字素,以便于删除变音符号。
使用 Unicode 属性转义
另一种方法涉及使用 Unicode 属性转义符:
const str = "Crème Brûlée"; const removed = str.normalize("NFD").replace(/\p{Diacritic}/gu, ""); console.log(removed); // Output: "Creme Brulee"
用于排序
如果目标只是排序,可以使用 Intl.Collator:
const c = new Intl.Collator(); const arr = ["creme brulee", "crème brûlée", ...]; arr.sort(c.compare);
IE6 注意事项
与IE6,正则表达式可能会出现问题。为了解决这个问题,一种简单的方法是手动将特定的重音字符替换为其等效的基本字符。例如:
const accentsTidy = (str) => { return str .toLowerCase() .replace(/\s/g, "") .replace(/[àáâãäå]/g, "a") .replace(/æ/g, "ae") // ... and so on .replace(/\W/g, ""); };
以上是如何从 JavaScript 中的字符串中删除重音符号,包括 IE6 兼容性?的详细内容。更多信息请关注PHP中文网其他相关文章!