Ruby Tips!

RubyのTipsを紹介します

文字列が空行を含むか判定する

文字列が空行もしくは空行を含むか判定するには、正規表現を使って以下のようする。
空行は空文字列か改行のみで構成される行とする。

p /^$/ =~ "" #=> 0
p /^$/ =~ " " #=> nil
p /^$/ =~ "\n" #=> 0
p /^$/ =~ "abc" #=> nil
p /^$/ =~ "abc\n" #=> nil
p /^$/ =~ "abc\n\n" #=> 4
p /^$/ =~ "abc\n\ndef" #=> 4

これの変形として、空白文字で構成される行も空行とみなすには以下のように書ける。

p /^\s*$/ =~ "" #=> 0
p /^\s*$/ =~ " " #=> 0
p /^\s*$/ =~ "abc" #=> nil
p /^\s*$/ =~ "abc\n" #=> nil
p /^\s*$/ =~ "abc\n\t" #=> 4
p /^\s*$/ =~ "abc\n\t\n" #=> 4
p /^\s*$/ =~ "abc\n\t\ndef" #=> 4

なお^は行頭を、$は行末を表す正規表現で、文字列の先頭と末尾でない事に注意。
もし常に単一行を処理するなら、文字列の先頭と末尾を表す\A\zを使って、以下のように書いたほうが正確である。

p /\A\s*\z/ =~ "" #=> 0