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

时间:2016-08-29 15:15:30

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

我尝试按,分割,但它会抛出带有逗号的条目。我也试过按\",进行拆分,但是它创建了一个高边形的字符串:

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

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

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

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

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

有什么建议吗?

感谢。

3 个答案:

答案 0 :(得分:6)

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



Serializable




答案 1 :(得分:0)

如果使用.split() ,

以逗号后跟双引号"字符,则可以RegExp逗号/,(?=")/个字符
str.split(/,(?=")/)

答案 2 :(得分:0)



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);