Just do IT

思うは招く

[Ruby] %記法で文字列を作る

Rubyでは、%q記法を使って文字列を簡単に作ることができる。 '"などの特殊文字エスケープするのが面倒なときによい。

%q: '"エスケープなしで記述できる

p moji = %q(He said, 'I want more muscle!')
=> "He said, 'I want more muscle!'"

用途によっては注意が必要。勝手にエスケープされるので、改行文字を改行と認識しなくなることも。

str = %q(blue 青 white 白\nred 赤)
=> "blue 青 white 白\\nred 赤"
# 勝手にエスケープされる

%Qなら改行として認識される。

str = %Q(blue 青 white 白\nred 赤)
=> "blue 青 white 白\nred 赤"

%qでは式展開が使えない。

str = "He said, 'I want more muscle!'"
p %q(#{str})
=> "\#{str}"

%Q: 式展開が使える

str = "He said, 'I want more muscle!'"
p %Q(#{str})
=> "He said, 'I want more muscle!'"

関連:

k-koh.hatenablog.com