首页 > 解决方案 > 总结 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;
    }

标签: javascriptreplace

解决方案


您可以尝试类似的方法(这只是一个开始,而不是完整的实现)。这种方法还使得不必多次迭代字符串。

// 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;
  }
}

推荐阅读