Javascript替换所有不在双引号中的逗号

标签 javascript regex replace

<分区>

我想用竖线 ('|') 替换逗号分隔字符串中的所有逗号,双引号中的逗号除外。如果可能,我更愿意使用 JavaScript“替换”功能。

我的正则表达式知识充其量是有限的。我可以用管道替换所有逗号,但这并没有给我解析数据所需的结果。我还在此处找到了一个正则表达式,它删除了除引号中的逗号之外的所有逗号,但没有实现竖线或其他一些定界符。

(?!\B"[^"]*),(?![^"]*"\B)

这是我要完成的示例:

string1 = 1234,Cake,,"Smith,John",,"Status: Acknowledge,Accept",,Red,,

我希望它看起来像:

string1 = 1234|Cake||"Smith,John"||"Status: Ackknowledge,Accept"||Red||

最佳答案

一个选项是使用替换回调分别用引号本身或管道替换引号或逗号:

str = `1234,Cake,,"Smith,John",,"Status: Acknowledge,Accept",,Red,,`;

res = str.replace(/(".*?")|,/g, (...m) => m[1] || '|');

console.log(res)

另一个(从长远来看,IMO 更好)是使用专用解析器来处理 CSV 数据。 CSV 实际上比看起来更棘手。

关于Javascript替换所有不在双引号中的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56515786/

相关文章:

javascript - ReactJS:PureRenderMixin 插件脚注 - 矛盾?

c# - 制作脚本从页面下载所有 Mp3 文件

javascript - 如何选择 id 取决于 javascript 变量的行?

python - 在 Python 中从 unicode 字符串中去除标点符号的最快方法

javascript - 使用数组匹配正则表达式

regex - 如何在 unix bash 中使用正则表达式在文本中查找日期和 IP 地址

python - 替换Python目录中文本文件中的值

vim - 在 Vim 中的替换内替换

java - 用正则表达式替换第一个

javascript - 获取数据属性 == 某物的元素