javascript - 如何在 Javascript 中拆分字符串,但如果字符串位于引号之间则不拆分?

标签 javascript split

我发现了很多有关简单拆分的问题,但我的文件类似于 csv 文件,并且某些字符串位于引号之间,并且可能包含逗号。

示例:

myKey,this is a string,"This is yet, another, string"

期望的输出:

["myKey", "this is a string", "This is yet, another, string"]

我发现了一个类似的问题,但我无法正确调整它:

str.split(/([^,"]+|[^,"]*)+/g)[0]

它给了我字符串的第一个字符。我还尝试在第一个括号后面添加 ?: 就像我看到的那样,但这似乎并不重要。

最佳答案

'myKey,this is a string,"This is yet, another, string"'
    .split(/,(?=(?:[^"]*"[^"]*")*$)/g);
// ["myKey", "this is a string", "\"This is yet, another, string\""]

这是通过确保逗号前面直到字符串末尾有零个或多个引号字符来实现的。如果逗号前面有奇数个引号,则不会匹配,因为它应该位于引号内,前提是所有引号都在字符串中闭合。

关于javascript - 如何在 Javascript 中拆分字符串,但如果字符串位于引号之间则不拆分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59804034/

相关文章:

JavaScript 字符串拆分方法分隔符

python - 我怎样才能只解析/拆分每个元素中有多个冒号的列表?创建字典

java - 使用键/值对中的空格不被引号括起来的正则表达式拆分字符串

javascript - AngularJS 有多少种方法可以将数据传递给范围以外的指令?

javascript - 如何在javascript中将函数存储在类变量中?

javascript - 有没有办法在 super 测试中设置默认值?

C# 拆分,返回数组中的键/值对

Windows 终端,拆分 Pane 但新 Pane 与以前的 Pane 位于同一目录中?

javascript - Node.js 请求返回对象

javascript - 稍后如何触发 native 点击操作(重播事件)?