Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript用一组不同的字母替换每个字母,但不重做已替换的部分_Javascript_Replace - Fatal编程技术网

JavaScript用一组不同的字母替换每个字母,但不重做已替换的部分

JavaScript用一组不同的字母替换每个字母,但不重做已替换的部分,javascript,replace,Javascript,Replace,我想用另外3个字母替换字符串中的每个字母。 在底部,我有一个可能的解决方案,我真正的问题是,这是否是一个好的解决方案 我的代码目前的工作原理是,它将所有字母“a”替换为“aug”,然后查看任何“b”并将其替换为“cuu”,直到到达“z” 然而,问题出现了,比如说,“g”。在将“a”替换为“aug”之后,aug中的“g”将被替换,从而进一步扩展它并得到错误的结果。 我有一个函数,看起来像: function e(letter, codon) { text = text.replace(le

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

我的代码目前的工作原理是,它将所有字母“a”替换为“aug”,然后查看任何“b”并将其替换为“cuu”,直到到达“z”

然而,问题出现了,比如说,“g”。在将“a”替换为“aug”之后,aug中的“g”将被替换,从而进一步扩展它并得到错误的结果。 我有一个函数,看起来像:

function e(letter, codon) {
    text = text.replace(letter, codon);
}
然后我为所有字母运行函数

e(/a/g,"gcu");
e(/b/g,"uag");
e(/c/g,"ugu");
//etc..
所以对于字符串:

text = "hello guy";
该程序的预期输出会将其转换为“Caugaacuucuuga ggguuuau”

然而,实际输出是“Cauuuggacuuuuuuuuuuuugguuuau”。这是因为当它到达“guy”中的“g”时,它将替换已编辑的文本

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


请原谅我是新手,我希望我的问题格式很好

我认为最好先把这个词分开,然后替换掉。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];
}
var text='hello guy';
var chars=text.split(“”);
var结果=“”;
变量替换表={
‘a’:‘gcu’,
‘b’:‘uag’,
‘c’:‘ugu’
};
对于(变量i=0;i

假设您有完整的字符表,您将使用字符串示例得到所需的结果

 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]]);
}
for(变量i=0;i
这非常有效,但是除了定义字符外,还有什么方法可以让未定义的字符不被替换为“未定义”字符?基本上,如果使用了其他字符(字母、数字、标点符号、特殊字符),我可以将它们保留在字符串中,还是必须全部定义它们?检查更新。如果定义了替换,则执行替换;如果未定义,则保留原始替换。很好,这很有效!如果我使用我的解决方案,这将在大约一半的代码行中达到我的确切目标。