文字列を分割して繰り返す
String#each
、String#each_line
、String#lines
は文字列の分割して繰り返しを行うメソッドだ。これらのメソッドは、引数で区切り文字を指定することで動作を変えることができる。
引数を与えない場合、これらのメソッドは組み込み変数$/
の値で文字列を分割する。組み込み変数$/
の規定値は\n
であり、改行を区切りとして各行に対して繰り返しを行う。
"foo\nbar\nbuz".each_line{|line| puts line } =begin foo bar buz =end
引数を与えると、これらのメソッドは引数を区切り文字として文字列を分割するようになる。以下は記号$
で文字列を分割して繰り返す例である。
"foo$bar$buz".each_line('$'){|line| puts line } =begin foo$ bar$ buz =end
区切り文字として空文字列""
を指定すると、これらのメソッドはパラグラフモードという特別なモードで動作する。パラグラフモードでは、2つ以上の改行(つまり空行)を区切りとして文字列を分割する。これにより英文の段落毎に処理を行うことが簡単にできる。
"foo\nbar\n\nbuz".each_line(""){|line| puts line } =begin foo bar buz =end