バックスラッシュ記法によるエスケープ処理

文字列の中にはキーボードから直接入力できない文字などを記述することができます。例えば改行などです。このような特殊な文字を記述するために使われるのがバックスラッシュ記法です。(他のプログラム言語ではエスケープシーケンスなどと呼ばれているものです)。ここでは Ruby でバックスラッシュ記法を使った特殊な文字の記入方法を解説します。

(Last modified: )

文字列をダブルクオーテーションで囲った場合

文字列を表すときにダブルクオーテーションで囲った場合に使用できるバックスラッシュ記法は次の通りです。

特殊文字意味
\tタブ
\n改行
\rキャリッジリターン
\f改ページ
\bバックスペース
\aベル
\eエスケープ
\s空白
\nnn8 進数表記
\xnn16 進数表記
\cxコントロール文字 (x は ASCII 文字)
\C-xコントロール文字 (x は ASCII 文字)
\x文字 x そのもの

代表的なものとして改行を表す \n があります。例えば次のように使用します。

"こんにちは\nお元気ですか"

この場合、「こんにちは」+改行+「お元気ですか」という文字の集合を表す文字列です。

また文字列の中で文字として "\ を使用したい場合には、文字の前に \ を記述して \"\\ のように記述します。

例えば次の文字列では、文字列の中で "山田" を記述しようとしています。

"こんにちは"山田"さん"

このように文字列の中で " を記述したい場合は、 " ではなく \" と記述します。

"こんにちは\"山田\"さん"

同じように文字列の中で \ を文字として使用したい場合は \\ と記述してください。

"改行は\\nと記述します"

この文字列には \n という改行を表すバックスラッシュ記法がありますが、 \ の前に \ があるため単なる文字として扱われます。よってこの文字列は「改行は\nと記述します」という文字列となります。

文字列をシングルオーテーションで囲った場合

文字列をシングルオーテーションで囲った場合は、基本的に文字列に記述された文字がそのまま文字として扱われます。その為 \n と記述しても \ と言う文字と n と言う文字の組み合わせとしか扱われません。

ただし文字列の中で文字として ' を使用したい場合には文字列の区切りが分からなくなってしまため \' と記述します。

'こんにちは\'山田\'さん'

また文字列の中で文字として \ を使用したい場合にも \\ と記述します。

'値段は\\100です'
サンプルコード

では簡単なプログラムで確認してみます。

# encoding: UTF-8

puts("こんにちは\nお元気ですか")
puts('こんにちは\nお元気ですか')
puts("こんにちは\"山田\"さん")
puts('こんにちは\'山田\'さん')

下記のように実行して下さい。

バックスラッシュ記法によるエスケープ

-- --

Ruby でバックスラッシュ記法を使った特殊な文字の記入方法を解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。