2017-09-27 7 views
0

たとえば、 "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を実行していないと思う。私は、1つだけでなく、別の文字を検索するのに使うことができる他の方法はありますか?そして、文字の検索が何であるかに応じて別の文字を挿入しますか?

+0

私はGをGCとCで置き換えると言ってみたと思います。 – marvel308

+0

それは私がそこにいるのですか? – hteml

+0

説明が不良です。これを解決するにはstring.replace()を使用できます。あなたは分割して参加する必要はありません – marvel308

答えて

0

を行うことができます。 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);

+0

で置き換えることを意味します。私は実際に前に地図を使うことを考えましたが、それを正しくしていませんでした。また、基本的に私はforループを使っていましたが、forループが最初のifを実行した後に関数をエスケープするため、機能しませんでした。マップ関数はすべての要素に対して実行されるため、if文で実行されます。 ?申し訳ありませんが、これはちょっと疑問ですが、私はこれを初めて使っています – hteml

+0

Forループも動作しますが、 'str'の値を更新していて、その長さにループを実行しています。新しい文字列を取得して値を変更した場合。 forループもそれに対応します。 –

+0

コードでどのように見えるのかわかりません。あなたは私を見せてくれますか? – hteml

0

あなたがsplitを使用してarraystringを変換して、配列を反復処理し、各文字を置き換えることができます

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

 
console.log(pairElement("GCG"));

0

。 returnステートメントにヒットすると、コントロールは終了します。より良い方法は、答えの一つとして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"); 
関連する問題