Rubyの文字列

文字列は"(ダブルクォート)か'(シングルクォート)で囲むが、特殊文字の扱いに違いがある。


ダブルクォート

""内では、特殊文字を解釈する。例えば\nは改行を意味するので、下記は1行目に「Hello」、改行して2行目に「world!」と出力。

puts "Hello\nworld!"

特殊文字の解釈をしたくない(エスケープという)場合、\を直前に付ける。下記は単なる文字として「\n」と出力。

puts "\\n"

シングルクォート

''内では、\'を除いて、特殊文字を解釈しない。

puts 'Hello\nworld!'

上記は改行文字を解釈しないので、「Hello\nworld!」と出力。

\や'を文字列として出力したい場合はエスケープする。下記は「\ '」と出力する。

puts '\\ \''

ヒアドキュメント

改行がたくさんあるなど長い文字列は、ヒアドキュメントを使って変数に代入するとソースコードが見やすくなる。

変数 = <<-"EOB"
改行、
しまくりの、
文字列。
EOB

上記はEOBという記号で囲まれた行の文字列が変数に代入される。この記号は別の文字でもいいが、「End Of Block」としてEOBがよく使われる。

記号を"(ダブルクォート)で囲んだ場合は文字列中の特殊文字は解釈されるが、'(シングルクォート)なら解釈しない。<<-の部分の-を省略した場合は、終了記号EOBの行頭に空白文字を入れてはならない。


変数の展開

"(ダブルクォート)で囲んだ文字列中に#{変数名}という書式で変数を入れておくと、変数に代入されている文字列を結果として出力できる。これを展開という。

#{変数名}
name = "アリス"
puts "こんにちは、#{name}さん"

上記は「こんにちは、アリスさん」と出力。