2017-01-14 161 views
0

在JavaScript中,我有一個自動生成的字符串數組(通過GET請求),字符串「在字符串內」。我的目標是在一個字符串中刪除兩個「中的所有文本」 使用replace()函數,適用於在字符串中只有2個「但不是4」的字符串。用JavaScript替換4個字符之間的字符串中的字符串

對於具有4「在下面的例子中,array[3]replace()函數刪除了太多的文本,它刪除了第一個「和最後一個」之間找到的所有文本,而它應該刪除第一個&秒之間的文本「AND」

之間的第三&第四」。

會有人知道一個解決方案? 10

請注意:我在我的代碼中使用的數組是從其他地方自動生成的。手動更改字符串數組是不可能的。對於下面以及小提琴的劇本我使用轉義字符\包括「字符串中,但在我實際的數組,這些都是不存在

這裏是我的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"] 

我有工作Fiddle返回字符串的錯誤陣列

+0

shortified:console.log(array.map(e => e.replace(/".*"/,「」))); –

+0

嘗試添加懶惰和全局標誌'/".*?"/ g' – maioman

回答

1

我不是一個正則表達式專家我會用純JS做到這一點:。

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

與斯普利特「,然後刪除陣列的每個第二部分。