0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

each_line

Posted at

文字列を'$/'の基準で切り分ける

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"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?