有没有办法匹配字符串中的每个字母并在其位置插入特定字母?

时间:2017-09-27 09:55:42

标签: javascript

例如,如果我有字符串“GCG”,我想插入一个 每次“G”匹配时“C”,每次“C”匹配时“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语句正在执行而没有运行else if。有没有其他方法可以用来搜索不同的字母,而不仅仅是一个,并根据搜索字母的内容插入另一个字母?

3 个答案:

答案 0 :(得分:0)

你可以做到

void Close_Tapped(object sender, System.EventArgs e)
{
    throw new NotImplementedException();
}

答案 1 :(得分:0)

您可以使用stringarray转换为split,然后遍历数组并替换每个字符。 然后,您可以使用join将数组转换为字符串。

&#13;
&#13;
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);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您没有使用递归。一旦它命中return语句,控件退出。更好的方法是使用正则表达式作为建议的答案之一,但如果您只想在自己的代码中进行微小的修改,可以尝试这样的事情。

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");