Javascript:拆分逗号分隔的引号字符串

Mac*_*Mac 1 javascript regex arrays split

我有一个字符串,它本身是一个以逗号分隔的引用字符串列表 - 可以在其中包含逗号.

例:

var str = '"long one","short","oh, look","wow.", ""';
Run Code Online (Sandbox Code Playgroud)

我需要将其拆分为一个数组:

['long one', 'short', 'oh, look', 'wow.', '']

// will take this if it is easier
['"long one"', '"short"', '"oh, look"', '"wow."', '""']
Run Code Online (Sandbox Code Playgroud)

我尝试拆分,但它会抛出带有逗号的条目.我也尝试过分裂\",,但它会创建出侧面的字符串:

['"long one', '"short', '"oh, look', '"wow.', '"']
Run Code Online (Sandbox Code Playgroud)

我尝试拆分\",\"但导致相同的问题,但仅针对第一个和最后一个条目:

['"long one', 'short', 'oh, look', 'wow.', '"']
Run Code Online (Sandbox Code Playgroud)

我也尝试了在这个答案中找到的正则表达式,但它在数组的开头和结尾添加了一个空条目:

['', '"long one"', '"short"', '"oh, look"', '"wow."', '""', '']
Run Code Online (Sandbox Code Playgroud)

有什么建议?

谢谢.

Nin*_*olz 6

您可以将其视为JSON字符串的一部分,并附加必要的部分以作为数组进行解析.

var string ='"long one","short","oh, look","wow.", ""',
    array = JSON.parse('[' + string + ']');
console.log(array);
Run Code Online (Sandbox Code Playgroud)

  • 需要注意的是,任何特殊字符都与JSON中的相同 - 制表符,换行符等.例如,如果双引号被转义为双引号而不是`\"`,那么这就赢了"工作. (2认同)