【发布时间】:2017-01-05 16:27:44
【问题描述】:
我有一个字符串,它本身就是一个逗号分隔的引用字符串列表 - 其中可以有逗号。
例子:
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 边字符串:
['"long one', '"short', '"oh, look', '"wow.', '"']
我尝试按\",\" 拆分,但导致相同的问题,但仅针对第一个和最后一个条目:
['"long one', 'short', 'oh, look', 'wow.', '"']
我还尝试了this answer 中的正则表达式,但它在数组的开头和结尾添加了一个空条目:
['', '"long one"', '"short"', '"oh, look"', '"wow."', '""', '']
有什么建议吗?
谢谢。
【问题讨论】:
-
为什么不使用你找到的正则表达式然后删除第一个和最后一个元素?
-
匹配
"(.*?)" -
这些是否来自 csv 文件?
-
是的,它们确实来自 CSV 文件。 @MikeC,你是对的,我可以做到。我想我只是不想冒着泄露一些数据的风险——万一没有附加额外的条目
-
由于引号不会出现在带引号的字符串中,并且您的数据由引号分隔,因此查找所有
"([^"]*)"真的很简单。这是最简单的解决方案。如果您稍后在这个简单的描述中添加警告,则需要更完整的正则表达式。
标签: javascript arrays regex split