Rubyでヒアドキュメントを使って、変数textにHTML文を代入する。
代入するHTML文の中には式展開で変数iを埋め込み、変数iが展開された状態で、変数textに代入するようにする。
ヒアドキュメントの基本構成
変数代入時に<<識別子~識別子と記載する。
識別子で挟まれた部分が変数に代入される。
識別子は文字列であれば何でもよい。
ヒアドキュメントじゃないと、改行や、"などを/n、\"と表現する必要があり、たくさんある場合に大変。
ヒアドキュメントを使うとその必要がなくなり、そのままの内容を記載すればよいので便利。
変数 = <<'識別子' 内容 識別子
サンプルコード
text = <<'EOS' これは テスト コードです。 EOS puts text
結果
これは テスト コードです。
識別子をEOSにしたけど、EOSの部分は識別子同士が同じであれば何でもよい。
以下でもOK。
まあ代入する文字列の中に識別子が出てきてしまうとだめなので、EOSにしておくのが無難。
text = <<'AAA' これは テスト コードです。 AAA
ヒアドキュメント内に変数を埋め込んでみる。
i= 3 text = <<'EOS' <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Test</title> </head> <body> <h1>1-1<h1> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-1です。 </a><br> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-2です。 </a><br> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-3です。 </a><br> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-4です。 </a><br> </body> </html> EOS puts text
結果
変数が展開されずにそのまま表示された。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Selenium Test</title> </head> <body> <h1>1-1<h1> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-1です。 </a><br> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-2です。 </a><br> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-3です。 </a><br> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-4です。 </a><br> </body> </html>
これを解決するには、
識別子を""(ダブルコーテーション)で挟む
””で挟んだコード
i= 3 text = <<"EOS" <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Selenium Test</title> </head> <body> <h1>1-1<h1> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-1です。 </a><br> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-2です。 </a><br> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-3です。 </a><br> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-4です。 </a><br> </body> </html> EOS puts text
結果
無事変数iが3に展開された!!やった
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Selenium Test</title> </head> <body> <h1>1-1<h1> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-3-1です。 </a><br> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-3-2です。 </a><br> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-3-3です。 </a><br> <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-3-4です。 </a><br> </body> </html>