0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「エスケープする」ってなんだっけ?

Posted at

内容

よくコーディングの文脈で「バックスラッシュをエスケープする」という言葉をよく聞くのですが、よく考えてみると良く分からず、後輩に説明できなかったので調べました。個人的な調査内容をまとめます。

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

エスケープシーケンスはエスケープ文字とそれに続く文字の組み合わせです。\nというエスケープシーケンスがあったとき、\ がエスケープ文字というようです。

「エスケープする」とは

この言葉は結構意味の広い言葉だと感じました。周りの人やネットを漁ると、「特殊な意味を持つ文字に対し、その文字の解釈を変更する指示を埋め込むこと」となるかなと思います。

  • 特殊文字の無効化
    • 例えば、" が文字の開始・終了を表すプログラミング言語のソースコード上で、文字列データとして " を表現したいときに「エスケープ」します。具体的な例はprint("Hello \"World\"")など。
  • 特殊文字の表現
    • 普通の方法では直接入力できないような特殊な文字(改行やタブ、キャリッジリターンなど)を特定の文字を使って表現すること。例えば、改行を\nとエスケープして入力します。

おまけ

エスケープ文字「\」を無効にする

多くのプログラミング言語でエスケープ文字は\ですが、これを無効にする方法が用意されています。

Python

文字列リテラル入力の最初にr(rawの意)を入力します。

sentence = "C:\\path\\to\\target.txt"
# ↑ 通常はこのように「\」がエスケープ文字であるため、「\」自体を表現したいときには
#  「\\」と入力する必要がある

# ↓

sentence = r"C:\path\to\target.txt"
# ↑ r"..." という文法を使うことで、
# 「\」がエスケープ文字として認識される機能を無効にすることができる
# そのため、「\」を表現したいときは「\」をそのまま入力すればよい

PHP

シングルクォーテーション(’)を使用します。もしくはnowdocを使用します。

echo("C:\\path\\to\\target.txt");
// ↓
echo('C:\path\to\target.txt');


// heredoc
echo(<<<END
C:\\path\\to\\target.txt
END
);

// ↓

// nowdoc
echo(<<<'END'
C:\path\to\target.txt
END
);

C#

文字列リテラル入力の最初に@を入力します。

string sentence = @"C:\path\to\target.txt";

string sentence = """C:\path\to\target.txt""";

その他の言語にも同様のエスケープ手法がありそうですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?