Javascript:分割逗号分隔的带引号的字符串

Javascript:分割逗号分隔的带引号的字符串,javascript,arrays,regex,split,Javascript,Arrays,Regex,Split,我有一个字符串,它本身就是一个逗号分隔的带引号字符串列表,其中可以包含逗号 例如: var str = '"long one","short","oh, look","wow.", ""'; 我需要将其拆分为一个数组: ['long one', 'short', 'oh, look', 'wow.', ''] // will take this if it is easier ['"long one"', '"short"', '"oh, look"', '"wow."', '""'] 我

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

例如:

var str = '"long one","short","oh, look","wow.", ""';
我需要将其拆分为一个数组:

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

// will take this if it is easier
['"long one"', '"short"', '"oh, look"', '"wow."', '""']
我尝试按拆分,但它会抛出带有逗号的条目。我还尝试按\、、进行拆分,但它会创建lob-side字符串:

['"long one', '"short', '"oh, look', '"wow.', '"']
我尝试按\拆分,但导致了相同的问题,但仅针对第一个和最后一个条目:

['"long one', 'short', 'oh, look', 'wow.', '"']
我还尝试了中的正则表达式,但它在数组的开头和结尾添加了一个空条目:

['', '"long one"', '"short"', '"oh, look"', '"wow."', '""', '']
有什么建议吗


谢谢。

您可以将其视为JSON字符串的一部分,并将解析所需的部分附加为数组

var string='long one,short,噢,看,哇。', array=JSON.parse'['+string+']';
console.logarray 您可以将其视为JSON字符串的一部分,并将解析所需的部分附加为数组

var string='long one,short,噢,看,哇。', array=JSON.parse'['+string+']'; console.logarray 如果逗号后跟使用RegExp/,?的双引号字符,则可以.split逗号,字符=/

如果逗号后跟使用RegExp/,?的双引号字符,则可以.split逗号,字符=/

var s='长的,短的,哦,看,哇。'; var answer=s.split/*,.?/gi.filterfunction a{ 返回a.replace//g.length>2 }.mapfunction a{ 返回a.replace//g, }; 控制台日志; console.loganswer var s='长的,短的,哦,看,哇。'; var answer=s.split/*,.?/gi.filterfunction a{ 返回a.replace//g.length>2 }.mapfunction a{ 返回a.replace//g, }; 控制台日志;
console.loganswer;为什么不使用您找到的正则表达式,然后删除第一个和最后一个元素?这些元素是否来自csv文件?是的,它们确实来自csv文件@米克,你说得对,我可以做到。我想我只是不想冒险对某些数据进行LOB操作——因为引号不会出现在带引号的字符串中,并且您的数据由引号分隔,所以很容易找到所有[^]*。这是最简单的解决办法。如果您以后在这个简单的描述中添加警告,则需要更完整的正则表达式。为什么不使用您找到的正则表达式,然后删除第一个和最后一个元素?匹配这些元素是否来自csv文件?是的,它们确实来自csv文件@米克,你说得对,我可以做到。我想我只是不想冒险对某些数据进行LOB操作——因为引号不会出现在带引号的字符串中,并且您的数据由引号分隔,所以很容易找到所有[^]*。这是最简单的解决办法。如果您以后在这个简单的描述中添加警告,则需要一个更完整的正则表达式。警告中的任何特殊字符都与JSON中的字符相同-制表符、换行符等。例如,如果双引号被转义为双引号而不是\,那么这将不起作用。对,这将是一个问题,但问题中看起来不是这样的。谢谢你的提醒@Joe。我认为这个解决方案对我的情况很有效。是的,这是一个很好的解决方案。记住边缘情况总是好的。注意,任何特殊字符都与JSON中的字符相同-制表符、换行符等。例如,如果双引号被转义为双引号而不是\,那么这将不起作用。对,这将是一个问题,但问题中看起来不是这样的。谢谢你的提醒@Joe。我认为这个解决方案对我的情况很有效。是的,这是一个很好的解决方案。只要记住边缘情况就好了。
str.split(/,(?=")/)