【今日のQ&A】「’」などの記号を文字として扱いたい

こんにちは、@codeship_techです。

エスケープシーケンスってご存知ですか?

プログラミングでよく使用する記号とかを、文章中でただの文字列として扱いたいことってありますよね。

今回は、そんな時に使われるエスケープシーケンスについて授業内でも質問があったので皆さんにも覚えていただくべくピックアップしました。

授業風景

エスケープシーケンスって何ですか?

文字として扱えないものを文字として扱うための表記法です。

クオーテーションを文字列にする

例えば、JavaScriptの以下のコードはエラーになります。

const str = 'He said 'please forgive me'  to us.';
//Uncaught SyntaxError: Unexpected identifier

文字列の中に 'please forgive me' とシングルクオーテーションが登場しています。

JavaScriptでは文字列の範囲をシングルクオーテーションで指定するので、
'He said 'please forgive me'  to us.' という文字列のつもりが、
'He said '  という文字列と please forgive me という「変数」と '  to us.' という文字列との組み合わせと見なされてしまいました。

(今回の場合は、一番外のシングルクオートをダブルクオートに変えれば表示自体は解決します)

以下のように、文字列中に登場するシングルクオーテーションを表示するにはちょっとコツがいります。

\バックスラッシュ(または環境によっては円マーク)」を文字列として入力したい記号の前に挿入します。
このようにバックスラッシュとセットで表記された記号を「エスケープシーケンス」と言います。

const str = 'He said \'please forgive me\' to us';
// "He said 'please forgive me ' to us."

文中のシングルクオーテーションが、意図した通り文字列として出力できています。

代表的なエスケープシーケンス

JavaScriptにおけるエスケープシーケンスとしては次のようなものが定義されています。

エスケープシーケンス意味
¥b
バックスペース
¥t水平タブ
¥v垂直タブ
¥n改行
¥r復帰
¥f改ページ
¥’シングルクオーテーション
¥”ダブルクオーテーション
¥¥¥文字
¥0NULL文字
¥xXX2桁のXX(16進数)が表すLatin-1文字
¥uXXXX4桁のXXXX(16進数)が表すUnicode文字

ポイントは \そのものを表示するときも、`\\`と重ねて表記する点です。

記号等を文章中で使用したい場合には大変便利なのでぜひエスケープシーケンスは覚えて使えるようにしましょう。

授業日記についてのご意見

CodeShipの授業について「こんな事が知りたい・紹介して」というご意見・ご提案がありましたら、CodeShip公式Twitterアカウント(【CodeShip】プログラミングスクール)までDMまたはリプライにてお寄せください。