2015年3月12日木曜日

gsub! の返り値

str = ""
p str.gsub!("\n","")
p str
str = "A\nB"
p str.gsub!("\n","")

とした場合、それぞれ
nil
""
"AB"
となる。

なので、(必ずしも改行があるわけではないが)改行があった場合に、それを取り除いたものがほしいとして、
hoge = str.gsub!("\n","")
と書くと、
改行があれば、「改行を取り除いた文字列」が変数hogeに入るが、
改行がない場合は、「そのままの文字列」ではなく、「nil」が変数hogeに入ってしまう。

あくまで変数strそのものを参照していけばいいのだが…つい癖で。

または、include? で確認してから使う。

0 件のコメント: