エスケープシーケンスについて
・Exercise10:エスケープシーケンスとは何か?
前回では、文字列を複数の行に分割して出力する方法を紹介しました。
1つ目の方法では、”\n”を挿入することにより複数行に分割しました。
つまりバックスラッシュ”\”と”n”という2つの文字が、文字列におけるその位置に改行コードを埋め込んだということです。
このバックスラッシュという記号は、入力するのが難しい記号を文字列に組み込んで暗号化します。
あなたが使いたいと思う色々な記号が、エスケープシーケンスとして利用できます。
重要なエスケープシーケンスとして、ダブルクォートとシングルクォートがあります。
文字列を表現する際にダブルクォートを用いますが、その文字列の中にダブルクォートを挿入したい場合、どうすればいいか考えてみてください。
仮に”I “understand” joe.”と書いた場合、understandを取り囲むダブルクォートが文字列の終わりだとRubyは思ってこんがらがってしまいます。
この場合、文字列の中に入るダブルクォートは、ダブルクォートではなくただの文字列の一部だとRubyに伝えなければなりません。
この問題を解決するには、ダブルクォートとシングルクォートをエスケープする必要があり、Rubyがそれらを文字列の中に埋め込む方法を知っています。
ここで例を見てみましょう。
"I am 6'2\" tall." # escape double-quote inside string
'I am 6\'2" tall.' # escape single-quote inside string2つ目の方法はトリプルクォート、すなわち”””を用いることで、文字列のような動作をするようになります。
ちょっとそれを使って遊んでみましょう。

出力結果について
上のプログラムを実行すると、以下のようになります。
ここでは、タブ記号が作られたということを確認してください。
きちんとスペースを得られたという点が、非常に重要です。

Rubyのエスケープシーケンスについて
以下が、Rubyでサポートされているエスケープシーケンスの一覧です。
あまり使わないものもあるでしょうが、きちんとその意味も含めて覚えてください。
実際にいくつか文字列の中に入れてみて、ちゃんと動くか確認してみるといいでしょう。
\\・・・ バックスラッシュ\を表示
\’ ・・・シングルクォート’を表示
\”・・・ ダブルクォート”を表示
\a・・・ベル文字(アラート)を表示
\b・・・バックスペース(1文字戻る)
\f ・・・改ページ
\n・・・改行
\r・・・キャリッジリターン
\t・・・タブ
\uxxxx・・・16ビットの16進数表記(ユニコードのみ)
\v・・・垂直タブ
\ooo・・・8進数表記
\xhh・・・16進数表記
学習ドリル
- 専用のフラッシュカードにエスケープシーケンスを書いて覚えてください。
- ”””の代わりにトリプルシングルクォート’’’を使ったとして、どうなるのか理由も含めて説明できますか?
- エスケープシーケンスと文字列のフォーマットを繋げて、より複雑なフォーマットを作成してみてください。
学習ドリルの答え
2. 文字列の場合は”か”””を使って囲むことができますが、この場合はトリプルシングルクォートを使うとエラーになります。なぜなら、”I’ll”のところでシングルクォートが既に使われており、Rubyがシングルクォートを文字列として認識できないからです。もし”””で囲まれた文字列の中に、エスケープシーケンスがなければ大丈夫です。
3.例えば以下のようになります。

