Rubyの文字列リテラルについて
Rubyには多数の文字列リテラルが存在する。1つずつ見てみよう。
まず式展開が不要な文字列はシングルクオート'
を使う。'
と\
以外、エスケープが不要なのも利点である。
p 'foo' #=> "foo"
式展開が必要な文字列はダブルクオート"
を使う。Rubyの文字列の中で最も基本的なリテラルと言えるだろう。
p "foo" #=> "foo"
式展開が不要で、記号を多用したい場合は、%q
による文字列リテラルが便利だ。リテラルを囲う文字は自由に選択できる。また改行を含むこともできる。
p %q(foo) #=> "foo"
%Q
は%q
の式展開ありのバージョンだ。式展開が必要な場合はこちらを使う。
p %Q(foo) #=> "foo"
文字列が複数行に渡る場合はヒアドキュメントを使うと良い。ヒアドキュメント中でも式展開が利用できる。
p <<STR foo bar buz STR #=> "foo\nbar\nbuz\n"
ヒアドキュメントは<<
の代わりに<<-
を使うと、終端行をインデントすることができる。
p <<-STR foo bar buz STR #=> "foo\nbar\nbuz\n"
また識別子を'
で囲んだシングルクオートヒアドキュメントでは、\
を含めて、囲んだ文字列がそのまま文字列となる。
p <<'STR' foo\ bar\ buz\ STR #=> "foo\\\nbar\\\nbuz\\\n"