0

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

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

但是有没有更优雅的方式呢?是否有我没有得到的 split 方法导致奇怪的结果?

4

2 回答 2

6

实际上 split 正在按照它应该的方式工作。但似乎您正在尝试拆分逗号分隔的值。在 Ruby 的 stdlib 中已经有一个解决方案:

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

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

于 2009-05-04T11:10:11.630 回答
2

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

于 2009-05-04T10:16:29.327 回答