javascript - Javascript - 将带有重音符号、空格和大写字母的文本转换为不带连字符和小写重音符号的文本
问题描述
我想将带有重音、空格和大写字母的文本转换为没有带有连字符和小写重音的文本。
我的解决方案是:
var text = 'Canción del Amor';
const nt = text.replace(/\s+/g, '-').normalize('NFD').replace(/[\u0300-\u036f]/g, '').toLowerCase();
console.log(nt);
请你帮我一个更好的解决方案。因为我希望它与所有浏览器兼容。
解决方案
您可以继续使用此解决方案,前提是您使用了 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 规范化需要一些相当复杂的字符串操作,并且最好使用已经有效的解决方案。
推荐阅读
- ios - 使用 UITextView 对 Rx 绑定进行单元测试
- php - php /Drupal7 Curl 错误 - SSL 读取:错误
- c# - 如何避免函数中的重复dom
- serenity-bdd - 无法通过 ThucydidesParameterizedRunner 从 CSV 读取测试数据
- ios - iOS:TableView 中的多个部分不起作用
- youtube - 在嵌入中隐藏 Youtube 标题和徽标(在右下角)
- python - Pandas - 按列分组并将数据转换为 numpy 数组
- sql - MS SQL:如何查找比最低工资高 10% 的员工姓名和工资?
- java - Spring Custom Filter 在发送回客户端之前过滤响应
- c# - 在 DataBind 之后添加列值