Rubyリファレンス: Home

each_line (String)

Edit   History

標準クラス・モジュール > String > each_line

str.each_line(separator = $/) {|line| block }

each_lineメソッドは、文字列を改行文字で分割して1行ずつ取り出します。ブロック引数lineに1行の文字列を入れながら、行数だけブロックを繰り返します。戻り値はレシーバ自身です。

取り出された文字列の末尾には改行文字がついたままになります。改行文字を取り除くにはchompメソッドを使います。"\r"はデフォルトでは改行文字と見なされません。

s = "line 1.\nline 2.\r\nline 3.\rline 4."
s.each_line {|line| p line.chomp }
"line 1."
"line 2."
"line 3.\rline 4."

引数に文字列を指定すると、その文字列を改行文字と見なします。nilを指定すると文字列全体を1行と見なします。空文字列""を指定すると、2つ以上の連続した改行で区切ります。

引数のデフォルト値は組み込み変数$/の値です。$/の初期値は"\n"です。

s = "line 1.\nline 2.\n\nline 3."
s.each_line("") {|line| p line.chomp }
"line 1.\nline 2.\n"
"line 3."

バージョンごとの違い

Ruby 1.8.7 Ruby 1.8.7とRuby1.9では、ブロックを省略したときはEnumeratorオブジェクトを返します。

Ruby 1.8.7 Ruby 1.8.7とRuby1.9では、linesメソッドがeach_lineの別名として加わりました。

Ruby 1.9 Ruby 1.9では、each_lineメソッドの別名eachが廃止されました。

関連項目