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

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

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

有帮助吗?

解决方案

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

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

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

其他提示

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

scroll top