如何在Ruby中拆分包含逗号的单引号逗号分隔值

Fre*_*röm 0 ruby split delimited-text

假设我有一个逗号分隔值的字符串,用单引号括起来,可能包含或不包含逗号,如下所示:

"'apples,bananas','lemons'"
Run Code Online (Sandbox Code Playgroud)

我想把它拆分成一个数组

["apples,bananas", "lemons"]
Run Code Online (Sandbox Code Playgroud)

显然,如果我split(',')是我得到的字符串

[ "'apples", "bananas'", "lemons" ]
Run Code Online (Sandbox Code Playgroud)

我不明白.我想出来的唯一方法是做到这一点

a = []
s = "'apples,bananas','lemons'"
s.scan(/\'([^\']+)\'/){|i| a << i[0]}

# result is ["apples,bananas", "lemons"]
Run Code Online (Sandbox Code Playgroud)

但是有更优雅的方式吗?有没有我得不到的分裂方法,这会导致奇怪的结果?

ujh*_*ujh 6

实际上,分裂正在按照预期的方式运作.但似乎你正在尝试拆分逗号分隔值.在Ruby的stdlib中已经有了解决方案:

http://www.ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html

或者如果你想要一个外部库(应该更好,更快,......)使用FasterCSV.

  • 至少使用FasterCSV,您可以解析现有字符串而无需重新格式化.要求'fastercsv'; "'苹果,香蕉','柠檬'".parse_csv(:quote_char =>"'")产生["苹果,香蕉","柠檬"],我相信这就是你要找的东西. (2认同)