例如,如果我有字符串" 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语句正在执行而不会运行其他语言。我还可以使用其他方法来搜索不同的字母,而不仅仅是一个字母,并根据搜索字母的搜索来插入另一个字母?
您可以使用split
将string
转换为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");