javascript - 总结 Javascript 中的替换函数
问题描述
有没有办法总结一个替换函数并使代码更简洁?我还没有找到一种方法来做到这一点,也无法在这里找到答案。
replaceFunction(string) {
this.string = (encodeURIComponent(string.toLowerCase()
.replace('/%[a-fA-F0-9]{2}/','-')
.replace('/-+/','-')
.replace('/-$/','')
.replace('/^-/','')
.replace('ä','ae')
.replace('ö','oe')
.replace('ü','ue')
.replace('Ä','ae')
.replace('Ö','oe')
.replace('Ü','ue')
.replace('_','-')
.replace('.','-')
.replace(/\s/g, '-')
.replace(/["']/g, '')
));
return string;
}
解决方案
您可以尝试类似的方法(这只是一个开始,而不是完整的实现)。这种方法还使得不必多次迭代字符串。
// First insert the polyfill posted here: https://stackoverflow.com/a/4314050/10406502
let a = 'Häberle-+Hänsle';
for(let i = 0; i < a.length; i++) {
switch (a[i]) {
case '-':
if (i + 1 < a.length && a[i + 1] !== '+')
break;
a = a.splice(i + 1, 1, '');
i--;
break;
case 'ä':
a = a.splice(i, 1, 'ae');
i++;
break;
}
}
推荐阅读
- automapper - AutoMapper - 从链接的源表中检索与链接它的字段不同的字段
- multithreading - 安德森操作系统原理与实践中使用自旋锁实现Lock
- angular - 角度表单验证成功后没有重定向
- go - 如何使用 gomail 设置发送为电子邮件地址
- gradle - 在 Java 项目中使用 Gradle 按功能生成影子 jar
- node.js - 在 After 或 afterEach 方法中,无法在 chai-http 中停止 httpServer
- excel-formula - 日期循环和反词逻辑的excel公式
- vhdl - LED矩阵行位不移位
- java - 当我加载更多数据时,如何防止 recyclerview 滚动启动
- python - 如何组织两个相关模型的迁移并为新创建的对象的 id 自动设置默认字段值?