除双引号中的逗号外,我想用竖线('|')替换逗号分隔的字符串中的所有逗号。如果可能的话,我希望使用JavaScript的“替换”功能。
我的正则表达式知识充其量是有限的。我可以用管道替换所有逗号,但这并不能为我解析数据提供所需的结果。我还在这里找到了一个正则表达式,该正则表达式除去了引号中的所有逗号,但未实现管道或其他定界符。
(?!\B"[^"]*),(?![^"]*"\B)
这是我要完成的工作的一个示例:
string1 = 1234,Cake,,"Smith,John",,"Status: Acknowledge,Accept",,Red,,
我希望它看起来像:
string1 = 1234|Cake||"Smith,John"||"Status: Ackknowledge,Accept"||Red||
答案 0 :(得分:3)
一种选择是使用replace回调分别用引号本身或管道替换引号或逗号:
str = `1234,Cake,,"Smith,John",,"Status: Acknowledge,Accept",,Red,,`;
res = str.replace(/(".*?")|,/g, (...m) => m[1] || '|');
console.log(res)
另一个(从长远来看,IMO会更好)是使用专用解析器来处理CSV数据。 CSV实际上比看起来复杂。
答案 1 :(得分:1)