2017-01-14 17 views
0

JavaScriptでは、文字列内に文字列を含む(GETリクエストを介して)文字列が自動的に生成されます。 replace()関数を使用すると、文字列内に2文字しか含まれていない文字列が4つではなく4文字しか使用できません。JavaScript内の4 "文字の間の文字列内の文字列の置換

4 "(2削除する必要があるテキスト部分)、array[3]の場合、replace()関数はあまりにも多くのテキストを削除します。最初の "and last"の間のテキストをすべて削除しますが、最初の&番目の "AND第三&」の間。

誰もがこのためのソリューションを知っていますか?

注:私のコードで使用する配列は、他の場所から自動的に生成されます。手動で文字列の配列を変更することはできません。以下とフィドル内のスクリプトのために私は、「文字列の中、私の実際の配列では、これらが存在しない含めるようにエスケープ文字\を使用

ここ

は私のJavaScriptコードです:私が持っている

var array = ["John Mayer & Peter Right", "John \"the Man\" Mayer & Peter Right", "John Mayer & Peter \"the King\" Right", "John \"the Man\" Mayer & Peter \"the King\" Right"] 
new_array = [] 
    for (var i = 0; i < array.length; i++){ 
     var edit_string = array[i].replace(/".*"/, "") 
     new_array.push(edit_string) 
    } 
console.log(new_array) // ["John Mayer & Peter Right", "John Mayer & Peter Right", "John Mayer & Peter Right", "John Right"] 

作業私は無地のJSでこれを行うだろう文字列の間違った配列を返すFiddle

+0

short:console.log(array.map(e => e.replace(/".*"/、 ""))); –

+0

遅延フラグとグローバルフラグ '/".*?"/g'を追加してみてください – maioman

答えて

1

イムない正規表現の専門家:。。

console.log(array.map(e=>e.split("\"").map((a,i)=>i%2==0?a:undefined).join(""))); 

スプリット付きその後、配列のすべての2番目の部分を削除します。

関連する問題