在 JavaScript 中,我有一个自动生成的字符串数组(通过 GET 请求),其中字符串中包含字符“。我的目标是删除单个字符串中两个“内的所有文本。
使用 replace()
函数适用于字符串中只有 2 个 "而不是 4 个的字符串。
对于具有 4 "(需要删除的两段文本)的字符串,下面示例中的 array[3]
,replace()
函数也会删除太多文本。它会删除第一个“和最后一个”之间找到的所有文本,同时应删除第一个和第二个“以及第三个和第四个”之间的文本。
有人知道这个问题的解决方案吗?
请注意:我在代码中使用的数组是从其他地方自动生成的。手动更改字符串数组是不可能的。对于下面和 Fiddle 中的脚本,我使用转义字符\将 "包含在字符串中,但在我的实际数组中,这些字符不存在。
这是我的 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返回错误的字符串数组。
最佳答案
我不是正则表达式专家。我会用普通的 js 来做到这一点:
console.log(array.map(e=>e.split("\"").map((a,i)=>i%2==0?a:undefined).join("")));
用“分割,然后删除数组的每隔一个部分。
关于javascript - 在 JavaScript 中替换 4 个“字符之间的字符串中的字符串片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41650420/