文字列を'$/'の基準で切り分ける
each_line(rs = $/, chomp: false) {|line| ... } -> self
each_line(rs = $/, chomp: false) -> Enumerator
文字列中の各行に対して繰り返し
ます。行の区切りは rs に指定した文字列で、そのデフォルト値は変数 $/ の値
です。各 lineには区切りの文字列も含みます。
rsに
nilを指定すると行区切りなし
とみなします。rsに空文字列 "" を指定すると「パラグラフモード」になり、改行コードが2つ以上連続するところで文字列を分割
します (つまり空行で分割します)。
[PARAM] rs:行末を示す文字列
[PARAM] chomp: true を指定すると各行の末尾から rs を取り除きます。
/n
で分けられている
irb(main):037* "aa\nbb\ncc\n".each_line do |line|
irb(main):038* p line
irb(main):039> end
irb(main):040> # => "aa\n"
irb(main):041> # => "bb\n"
irb(main):042> # => "cc\n"
irb(main):043>
irb(main):044> p "aa\nbb\ncc\n".lines.to_a # => ["aa\n", "bb\n", "cc\n"]
irb(main):045> p "aa\n".lines.to_a # => ["aa\n"]
irb(main):046> p "".lines.to_a # => []
irb(main):047>
irb(main):048> s = "aa\nbb\ncc\n"
irb(main):049> p s.lines("\n").to_a #=> ["aa\n", "bb\n", "cc\n"]
irb(main):050> p s.lines("bb").to_a #=> ["aa\nbb", "\ncc\n"]
"aa\n"
"bb\n"
"cc\n"
["aa\n", "bb\n", "cc\n"]
["aa\n"]
[]
["aa\n", "bb\n", "cc\n"]
["aa\nbb", "\ncc\n"]
=> ["aa\nbb", "\ncc\n"]
何を基準に切り分けられているのか調べてみた。 $/
とは?
irb(main):051* "aanbbnccn".each_line do |line|
irb(main):052* p line
irb(main):053> end
"aanbbnccn"
=> "aanbbnccn"
irb(main):054* "aanb/bnccn".each_line do |line|
irb(main):055* p line
irb(main):056> end
"aanb/bnccn"
=> "aanb/bnccn"
...
irb(main):066* "aa\nbbnccn".each_line do |line|
irb(main):067* p line
irb(main):068> end
"aa\n"
"bbnccn"
=> "aa\nbbnccn"
$/
に変数として格納 これを基準に切り分けられる
irb(main):071> $/
=> "\n"