Javascript-将带有重音,空格和大写字母的文本转换为不带连字符和小写字母的重音的文本

时间:2019-02-06 23:13:10

标签: javascript string cross-browser normalization backwards-compatibility

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

我的解决方法是:

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

console.log(nt);

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

1 个答案:

答案 0 :(得分:0)

只要您使用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规范化需要一些相当复杂的字符串操作,而使用已经有效的解决方案则要好得多。