我想用另外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个字母。我的主要问题是,这是一个合法的解决方案,还是荒谬的?
请原谅我对此不熟悉,我希望我的问题格式很好。
答案 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]]);
}