首页 >web前端 >js教程 >如何从 JavaScript 中的字符串中删除重音符号,包括 IE6 兼容性?

如何从 JavaScript 中的字符串中删除重音符号,包括 IE6 兼容性?

DDD
DDD原创
2024-12-21 12:16:19752浏览

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

从 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.Collat​​or:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn