我想在10之后删除下面的单引号,并用空字符串替换。
所以100,50,“bla 10”bla“,20,”另一个字符串“
变为
100,50,“bla 10 bla”,20,“另一根弦”
我是如此接近,但以下是选择0“
/ [^ “]”[^ $“] /克
有什么想法?谢谢!
答案 0 :(得分:0)
您可以使用
var s = '100,,50,"bla 10" bla",20,"another string","string"';
var splits = s.split(/(?:^|,)(".*?")(?:,|$)|,/);
splits = splits.filter(function (x) { return x !== undefined;});
console.log(splits);
var res = splits.map(function(x) {
return x.replace(/^,*(")|("),*$|"/g, '$1$2');
}).join(',');
console.log(res);
<强>详情
(?:^|,)"
- 匹配,
或字符串(
- 捕获组的开始"
- "
.*?
- 任意0个字符,尽可能少"
- "
)
- 捕获组的结束(?:,|$)
- ,
或字符串结尾|
- 或,
- 逗号我们收到所有匹配后,.replace(/^,*(")|("),*$|"/g, '$1$2'
会删除所有"
但会在匹配的开头/结尾。细节:
^,*(")|
- 在字符串开头(,
)匹配^
一次或多次,然后将"
捕获到第1组,或("),*$|
- 在字符串末尾("
)抓取$
,然后在群组2或,
"
- 匹配任何其他"
。 $1$2
替换模式“恢复”捕获到组1和组2中的"
(即保留"
s,它们位于字符串的开头,带有可选{ {1}}在字符串的前面或末尾,并删除所有其他内容。)