我想将带有重音,空格和大写字母的文本转换为不带连字符和小写字母的重音。
我的解决方法是:
var text = 'Canción del Amor';
const nt = text.replace(/\s+/g, '-').normalize('NFD').replace(/[\u0300-\u036f]/g, '').toLowerCase();
console.log(nt);
请您帮我一个更好的解决方案。因为我希望它与所有浏览器兼容。
答案 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规范化需要一些相当复杂的字符串操作,而使用已经有效的解决方案则要好得多。