分かりやすく、使いやすく。

ヒアドキュメントを使って複数行を 1 つの文字列にする方法

スポンサーリンク

Ruby ではヒアドキュメントを使用して複数行の文字列を扱うことができます。ヒアドキュメントは変数を展開するやり方と、展開しないやり方があります。

  1. 変数の中身を展開しないヒアドキュメント
  2. 変数の中身を展開するヒアドキュメント
  3. 末尾の識別子の前にスペースやタブを入れる


変数の中身を展開しないヒアドキュメント

変数の中身を展開しない場合、先頭の識別子を 'EOF' のようにシングルクオテーションで囲みます。ちなみに EOF という識別は任意の文字列です。末尾の識別子と同じであれば他の文字列でも構いません。

ruby(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
num = 123
 
# 変数を展開しないヒアドキュメント
str = <<'EOF'
ここに任意の文字列を入力
先頭の識別子をシングルクオテーションで囲むと
文字列内の変数は展開されません。
#{num}←変数は展開しません。
EOF
 
# str の内容を確認
puts str 

上記の実行結果は次の通りです。

ここに任意の文字列を入力
先頭の識別子をシングルクオテーションで囲むと
文字列内の変数は展開されません。
#{num}←変数は展開しません。 

変数の中身を展開するヒアドキュメント

変数の中身を展開する場合、先頭の識別子を "EOS" のようにシングルクオテーションで囲みます。ちなみに EOS という識別は任意の文字列です。末尾の識別子と同じであれば他の文字列でも構いません。

ruby(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
num = 123
 
# 変数を展開するヒアドキュメント
str = <<"EOS"
ここに任意の文字列を入力
先頭の識別子をダブルクオテーションで囲むと
文字列内の変数は展開されます。
#{num}←変数は展開されます。
EOS
 
# str の内容を確認
puts str 

上記の実行結果は次の通りです。

ここに任意の文字列を入力
先頭の識別子をダブルクオテーションで囲むと
文字列内の変数は展開されます。
123←変数は展開されます。 

ちなみに識別子を囲まない場合も変数の内容は展開されます。

ruby(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
num = 123
 
# 変数を展開するヒアドキュメント
str = <<EOL
ここに任意の文字列を入力
先頭の識別子を囲まない場合も
文字列内の変数は展開されます。
#{num}←変数は展開されます。
EOL
 
# str の内容を確認
puts str 

上記の実行結果は次の通りです。

ここに任意の文字列を入力
先頭の識別子を囲まない場合も
文字列内の変数は展開されます。
123←変数は展開されます。 

末尾の識別子の前にスペースやタブを入れる

Ruby のヒアドキュメントでは先頭の識別子の前に - を付けることで末尾の識別子をスペースやタブでインデントすることができます。サンプルコードは次の通りです。

ruby(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
num = 123
 
# 識別子の先頭に - を付けると、末尾の識別子の先頭にスペースやタブを入れられる
    str1 = <<-"EOS"
ヒアドキュメント1行目。
#{num}←変数は展開されます。
ヒアドキュメント3行目。
    EOS
 
# str1 の内容を確認
puts str1
 
 
# 識別子の先頭に - を付けると、末尾の識別子の先頭にスペースやタブを入れられる
    str2 = <<-'EOS'
ヒアドキュメント1行目。
#{num}←変数は展開されません。
ヒアドキュメント3行目。
    EOS
 
# str2 の内容を確認
puts # 前の出力結果と表示を分けるため改行
puts str2
 
 
# 識別子の先頭に - を付けると、末尾の識別子の先頭にスペースやタブを入れられる
    str3 = <<-EOS
ヒアドキュメント1行目。
#{num}←変数は展開されます。
ヒアドキュメント3行目。
    EOS
 
# str3 の内容を確認
puts # 前の出力結果と表示を分けるため改行
puts str3 

上記の実行結果は次の通りです。

ヒアドキュメント1行目。
123←変数は展開されます。
ヒアドキュメント3行目。
 
ヒアドキュメント1行目。
#{num}←変数は展開されません。
ヒアドキュメント3行目。
 
ヒアドキュメント1行目。
123←変数は展開されます。
ヒアドキュメント3行目。 
スポンサーリンク
スポンサーリンク