首页 > 解决方案 > Javascript - 将带有重音符号、空格和大写字母的文本转换为不带连字符和小写重音符号的文本

问题描述

我想将带有重音、空格和大写字母的文本转换为没有带有连字符和小写重音的文本。

我的解决方案是:

var text = 'Canción del Amor';
const nt = text.replace(/\s+/g, '-').normalize('NFD').replace(/[\u0300-\u036f]/g, '').toLowerCase();

console.log(nt);

请你帮我一个更好的解决方案。因为我希望它与所有浏览器兼容。

标签: javascriptstringcross-browsernormalizationbackwards-compatibility

解决方案


您可以继续使用此解决方案,前提是您使用了 unorm 之类的polyfill。放置一个

<script type="text/javascript" src="https://unpkg.com/unorm@1.4.1/lib/unorm.js"></script>

以上任何用法都String.prototype.normalize()应该允许该函数在仅支持 ECMAScript 5 的旧浏览器中工作。

我不建议为该normalize()方法重新发明轮子;unicode 规范化需要一些相当复杂的字符串操作,并且最好使用已经有效的解决方案。


推荐阅读