Rubyリファレンス: Home

lines (String)

Edit   History

Ruby 1.8.7 Ruby 1.9

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

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

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

each_lineメソッドは、linesの別名です。

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

s = "line 1.\nline 2.\r\nline 3.\rline 4."
s.lines {|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.lines("") {|line| p line.chomp }
"line 1.\nline 2.\n"
"line 3."

ブロックを省略したときは、Enumeratorオブジェクトを返します。

s = "line 1.\nline 2.\nline 3.\nline 4.\n"
puts s.lines.collect {|line| line.chomp }.join("/")
line 1./line 2./line 3./line 4.

関連項目