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

时间:2009-05-04 10:14:01

标签: ruby split delimited-text

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

"'apples,bananas','lemons'"

我希望将其拆分为数组

["apples,bananas", "lemons"]

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

[ "'apples", "bananas'", "lemons" ]

我不明白。我想出的唯一方法就是

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

# result is ["apples,bananas", "lemons"]

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

2 个答案:

答案 0 :(得分:6)

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

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

或者,如果您想要一个外部图书馆(应该更好,更快,......),请使用FasterCSV

答案 1 :(得分:2)

#split的结果完全正常,该方法不应该以任何方式对字符串进行标记。选择你知道的方式优雅的方式。