从JavaScript字符串中删除重音符号

在JavaScript中,您经常需要从字符串中删除重音符号。当您想要比较字符串而不考虑重音符号时,或者当您想要为存储或显示规范化字符串时,这将非常有用。

这可能看起来是一个困难的任务,但实际上非常简单。事实上,JavaScript的String.prototype.normalize()方法使得这一切变得轻而易举,因为它具有'NFD'选项。该选项允许您将字符串转换为规范化的Unicode格式,将基本字符与变音标记分开。

但这还不是全部。在将基本字符与变音标记分开后,您可以使用String.prototype.replace()删除字符串中的变音标记。这可以通过使用正则表达式来匹配给定Unicode范围(u0300u036f)中的变音标记,并将它们替换为空字符串来实现。

const removeAccents = str =>
  str.normalize('NFD').replace(/[\u0300-\u036f]/g, '');

removeAccents('Antoine de Saint-Exupéry'); // 'Antoine de Saint-Exupery'