我正在尝试在单个字符串中替换多个字符,但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
答案 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'
}));