在JavaScript中,我有一个自动生成的字符串数组(通过GET请求),其字符为"在一个字符串中。我的目的是删除两个内容中的所有文本。在一个字符串中。
使用replace()
函数适用于只有2"在字符串中,但不是4。
对于有4" (需要删除的两段文本),array[3]
在下面的示例中,replace()
函数删除了太多文本。它删除了第一个"之间发现的所有文本。并且最后",它应该删除第一个和第二个之间的文本。第二个"在第三和第三之间第四个"。
有人会知道解决方案吗?
请注意:我在代码中使用的数组是从其他地方自动生成的。手动更改字符串数组是不可能的。对于下面和小提琴中的脚本,我使用转义字符\来包含"在字符串中,但在我的实际数组中,这些不存在。
这是我的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 :(得分:1)
我不是正则表达式专家。我会用普通的js来做这个:
console.log(array.map(e=>e.split("\"").map((a,i)=>i%2==0?a:undefined).join("")));
用&#34;拆分,然后删除数组的每个第二部分。