Ruby Tips!

RubyのTipsを紹介します

文字列を行に分割した配列を得る

Rubyで文字列を行に分割して処理するにはString#eachString#linesまたはString#each_linesが利用できる。これらのメソッドは、ブロックなしで呼び出されると、文字列を行ごとに分割するEnumerable::Enumeratorオブジェクトを返す。

例えば文字列を行ごとに分割した配列を得るにはEnumerable#to_aを使って以下のようにする。

p "foo\nbar\nbuz\n".lines.to_a #=> ["foo\n", "bar\n", "buz\n"]

Enumerable#collectを使えば、1行ごとに何らかの変換を行った配列を得ることも可能である。

p "foo\nbar\nbuz\n".lines.collect{|l| l.upcase } #=> ["FOO\n", "BAR\n", "BUZ\n"]

Enumerable#selectを使って、特定の条件を満たす行に絞り込んで処理を行うこともできる。

p "foo\nbar\nbuz\n".lines.select{|l| l =~ /\Ab/ } #=> ["bar\n", "buz\n"]