文字列を行に分割した配列を得る
Rubyで文字列を行に分割して処理するにはString#each
、String#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"]