文字列は"
(ダブルクォート)か'
(シングルクォート)で囲むが、特殊文字の扱いに違いがある。
""
内では、特殊文字を解釈する。例えば\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}さん"
上記は「こんにちは、アリスさん」と出力。