JavaScript用不同的字母集替换每个字母,但不重做已经替换的字母

时间:2015-11-15 03:04:30

标签: javascript replace

我想用另外3个字母替换字符串中的每个字母。 在底部,我有一个可能的解决方案,我真正的问题是它是否是一个很好的解决方案。

我的代码目前是如何工作的,它需要所有字母" a",并将其替换为" aug"然后查看任何" b"并用" cuu"替换它们,直到它到达" z"。

然而,问题出现在,例如," g。"取代了" a"进入" aug"," g"在8月将被取代扩大它,并给我一个错误的结果。 我有一个看起来像这样的功能:

routes.php

然后我为所有字母运行该函数。

function e(letter, codon) {
    text = text.replace(letter, codon);
}

所以对于一个字符串:

e(/a/g,"gcu");
e(/b/g,"uag");
e(/c/g,"ugu");
//etc..

程序的期望输出会将其变成" caugaacuucuuuga ggguuuuau"

实际输出是" cauuugggaacuuuuuuuuuuuuuuga ggguuuuau"然而。这是因为当它达到" g" in" guy"它取代了已编辑的文本。

我对此的解决方法是制作它而不是用3个普通字母替换它,而是将每个字母变成无用的字符或长字符串,然后它会变成我想要的3个字母。我的主要问题是,这是一个合法的解决方案,还是荒谬的?

请原谅我对此不熟悉,我希望我的问题格式很好。

2 个答案:

答案 0 :(得分:2)

我认为最好首先拆分这个词,然后更换它。 e.g。

var text = 'hello guy';
var chars = text.split('');
var result = '';
var replaceTable = {
  'a': 'gcu',
  'b': 'uag',
  'c': 'ugu'
};

for (var i = 0; i < chars.length; i++) {
 var replaced = replaceTable[chars[i]];
 result += replaced ? replaced : chars[i];
}

假设你有完整的角色表,你将得到你想要的结果

答案 1 :(得分:0)

使用您的字符串示例

 var text = "hello guy";

并使用rkmax提供的具有替换表的解决方案。

var replaceTable = {
  'a': 'gcu',
  'b': 'uag',
  'c': 'ugu'
};

只需在字符串本身上执行for循环:

for (var i=0; i < text.length; i++) {
    e(text[i], replaceTable[text[i]]);
}