特殊な文字の入力(エスケープシーケンス)

文字の中には例えば改行やタブなど文字として入力ができないものがあります。このような特殊な文字を文字列の中で表現する方法としてエスケープシーケンスが用意されています。エスケープシーケンスはバックスラッシュ(\)と文字の組み合わせで特殊な文字を表すことができます。ここでは JavaScript でエスケープシーケンスを使って特殊な文字を入力する方法について解説します。

(Last modified: )

エスケープシーケンスとは

エスケープシーケンスを使用することで、改行などの特殊な文字を文字列リテラルの中で入力することができます。エスケープシーケンスはバックスラッシュ(\)( Windows の場合は円記号)と文字の組み合わせで記述することができます。

例えば文字列の中で改行を行いたいとき、通常のテキスト入力のように Enter を押してしまうと、次のようにプログラムは改行されますが文字列の中に改行が含まれるわけではありません。(エラーとなります)。

let msg = 'こんにちは。
今日は天気がいいですね。';

文字列の中で改行を行うには、改行を表すエスケープシーケンスを使用します。改行を表すエスケープシーケンスは \n ですので、改行を行いたい位置に \n を入力してください。

let msg = 'こんにちは。\n今日は天気がいいですね。';

実際に先ほどの文字列をコンソールに出力してみると、 \n が記述された位置で改行されていることが確認できます。

let msg = 'こんにちは。\n今日は天気がいいですね。';
console.log(msg);
>> こんにちは。
    今日は天気がいいですね。

このようにエスケープシーケンスを使用することで、特殊な文字を文字列の中で記述することができるようになります。

エスケープシーケンスの一覧

利用可能なエスケープシーケンスの一覧は次の通りです。

エスケープシーケンス意味
\bバックスペース
\t水平タブ
\v垂直タブ
\n改行
\r復帰
\f改ページ
\'シングルクォーテーション
\"ダブルクォーテーション
\`バッククォート
\\バックスラッシュ
\0NULL文字
\xXX2桁の16進数が表すLatin-1文字
\uXXXX4桁の16進数が表すUnicode文字
\u{XXXXXX}16進数のコードポイントが表すUnicode文字

改行や水平タブなどはキーボードから入力できないためエスケープシーケンスが用意されていますが、シングルクォーテーションについては文字列リテラルをシングルクォーテーションで囲んで記述した場合に文字列の中でシングルクォーテーションを使う時、ダブルクォーテーションについては文字列リテラルをダブルクォーテーションで囲んで記述した場合に文字列の中でダブルクォーテーションを使う時に記述します。

let msg = 'Today\'s Movie';
console.log(msg);
>> Today's Movie

また文字列リテラルの中でバックスラッシュ(\)はエスケープシーケンスを構成する特別な意味を持つ文字なので、単なる文字としてのバックスラッシュを記述したいときにはバックスラッシュの前にバックスラッシュを記述した \\ というエスケープシーケンスを記述します。

let msg = '改行は\\nと記述します';
console.log(msg);
>> 改行は\nと記述します

2 桁の 16 進数を使って文字をあらわす \xXX や、 4 桁の 16 進数を使って文字をあらわす \uXXXX といったエスケープシーケンスを使用できます。

let msg1 = '\x48\x65\x79';
console.log(msg1);
>> Hey

let msg2 = '\u82b1\u675f';
console.log(msg2);
>> 花束

Unicode コードポイントを指定して文字をあらわす \u{XXXXXX} は ECMAScript 2015 (ES 6) から利用可能になったエスケープシーケンスです。

let msg = '\u{57FA}\u{790E}';
console.log(msg);
>> 基礎

-- --

JavaScript における文字列リテラルの記述方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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