是否有一种方法可以匹配字符串中的每个字母并将特定字母插入其位置



例如,如果我有字符串" gcg",我想插入一个每个" G"匹配的" C",每个" C"匹配的A" G",使其成为GCCGGC。

到目前为止,我有以下内容,但是它打印了GCGCGC。

function pairElement(str) {
    for(i = 0; i < str.length; i++) {
        if(str[i] == "G") {
            return str.replace(/([GC+/])/g, "GC");
        } else if (str[i] == "C") {
            return str.replace(/([?=CG+/])/g, "CG");
        }
    }
}
pairElement("GCG");

编辑:我认为只有第一个if语句正在执行而不会运行其他语言。我还可以使用其他方法来搜索不同的字母,而不仅仅是一个字母,并根据搜索字母的搜索来插入另一个字母?

您可以使用splitstring转换为array,然后通过数组迭代并替换每个字符。然后,您可以使用join将数组转换为字符串。

var string = 'GCG';
var str = string.split('').map(c => {
  if(c === 'G') c = 'GC';
  else if (c === 'C') c = 'CG';
  return c;
}).join('');
console.log('String ' + string);
console.log('New String ' + str);

你可以做

function pairElement(str) {
    return str.replace(/G|C/g, e => e=='G'?'GC':'CG')
}
console.log(pairElement("GCG"));

您不使用递归。一旦达到返回语句,控件就会退出。更好的方法是将Regex用作建议的答案之一,但是如果您想在自己的代码中进行微小的修改,也许可以尝试这样的东西。

function pairElement(str) {
var newStr= ""; // using new string to make it more readible
    for(i = 0; i < str.length; i++) {
        if(str[i] == "G") {
            newStr = newStr + str[i] + "C";
        } else if (str[i] == "C") {
            newStr = newStr + str[i] + "G";
        } else {
            newStr = newStr + str[i]; //you didn't specify what do you want to do in this case
        }
    }
    return newStr;
}
pairElement("GCG");

最新更新