假设我的逗号分隔值的字符串用单引号括起来,可能包含或不包含逗号,如下所示:
"'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"]
但是有更优雅的方式吗?有没有我得不到的分裂方法,这会导致奇怪的结果?
答案 0 :(得分:6)
实际上,分裂正在按照预期的方式运作。但似乎你正在尝试拆分逗号分隔值。在Ruby的stdlib中已经有了解决方案:
http://www.ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html
或者,如果您想要一个外部图书馆(应该更好,更快,......),请使用FasterCSV。
答案 1 :(得分:2)
#split的结果完全正常,该方法不应该以任何方式对字符串进行标记。选择你知道的方式优雅的方式。