如何替换字符串中的多个字符?

时间:2017-05-16 16:26:35

标签: javascript

我正在尝试在单个字符串中替换多个字符,但C字符不会更改为G,其余的工作正常。

String.prototype.allReplace = function(obj) {
    var retStr = this;
    for (var x in obj) {
        retStr = retStr.replace(new RegExp(x, 'g'), obj[x]);
    }
    return retStr;
};

console.log('ACGTGGTCTTAA'.allReplace({'A' : 'U', 'C' : 'G', 'G' : 'C', 'T' : 'A'}));

// console.log is UCCACCACAAUU

1 个答案:

答案 0 :(得分:3)

你在每一步都在输入字符串中进行全局替换,所以在将每个C实例更改为G之后,然后将G的每个实例更改回C:稍后的键/值对覆盖结果早先的。

相反,单独遍历输入的每个字符:

String.prototype.allReplace = function(obj) {
  var input = this;
  var output = "";
  for (var i = 0; i < input.length; i++) {
    output = output + obj[input.charAt(i)];
  }
  return output;
}
console.log('ACGTGGTCTTAA'.allReplace({
  'A': 'U',
  'C': 'G',
  'G': 'C',
  'T': 'A'
}));