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

しかし、もっとエレガントな方法はありますか? 奇妙な結果を引き起こしている分割方法で得られないものはありますか?

4

2 に答える 2

6

実際、splitは想定どおりに機能しています。しかし、カンマ区切りの値を分割しようとしているようです。そして、Rubyのstdlibにはすでに解決策があります。

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

または、外部libray(より良い、より速い、...)が必要な場合は、FasterCSVを使用します。

于 2009-05-04T11:10:11.630 に答える
2

#splitの結果は完全に正常であり、メソッドは文字列をトークン化することは想定されていません。エレガントなものよりもうまくいくことがわかっている方法を選んでください。

于 2009-05-04T10:16:29.327 に答える