2017-01-14 125 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(""))); 

与斯普利特“,然后删除阵列的每个第二部分。