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

Javascript: Split Comma Delimited Quoted Strings

本文关键字:字符串 分隔 拆分 Javascript      更新时间:2023-09-26

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

示例:

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.', '"']

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

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

有什么建议吗?

谢谢。

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

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

如果逗号后面跟着双引号"字符,则可以使用RegExp /,(?=")/ 使用.split()逗号,字符

str.split(/,(?=")/)

var s = '"long one","short","oh, look","wow.", ""';
var answer = s.split(/("*,.?")/gi).filter(function (a) {
  return a.replace(/"/g, '').length > 2
}).map(function (a) {
  return a.replace(/"/g, '')
});
console.log(s);
console.log(answer);