はじめに
C#のエスケープシーケンスについての備忘録です。
学習中に調べた内容を自分用にまとめています。
エスケープシーケンスとは
通常の文字列では表現できない文字(改行、タブ、引用符など)を、バックスラッシュ(\)などの特殊な記号と文字の組み合わせで表現する仕組みです。
例えば、文字列の中で改行を表現したい場合、実際に改行を入れるのではなく \n と書くことで改行を表現できます。
C#のエスケープシーケンス一覧
基本的なエスケープシーケンス
| エスケープシーケンス | 説明 | 出力例 |
|---|---|---|
\' |
単一引用符(シングルクォーテーション) | ' |
\" |
二重引用符(ダブルクォーテーション) | " |
\\ |
バックスラッシュ | \ |
\0 |
null文字 | (制御文字) |
\a |
警告音(ベル) | (音が鳴る) |
\b |
バックスペース | (1文字戻る) |
\f |
フォームフィード(改ページ) | (改ページ) |
\n |
改行(ラインフィード) | (改行) |
\r |
キャリッジリターン | (行頭に戻る) |
\t |
水平タブ | (タブスペース) |
\v |
垂直タブ | (垂直タブ) |
Unicodeエスケープシーケンス
| エスケープシーケンス | 説明 | 使用例 |
|---|---|---|
\uxxxx |
Unicode文字(4桁の16進数) |
\u3042 → あ |
\Uxxxxxxxx |
Unicode文字(8桁の16進数) |
\U0001F600 → 😀 |
\xh[h][h][h] |
Unicode文字(1~4桁の16進数) |
\x3042 → あ |
使用例
// 基本的な使用例
string text1 = "こんにちは\n世界"; // 改行
string text2 = "彼は\"こんにちは\"と言った"; // 引用符
string text3 = "C:\\Users\\Documents"; // バックスラッシュ
string text4 = "\u3042\u3044\u3046"; // Unicode(あいう)
string text5 = "項目1\t項目2\t項目3"; // タブ区切り
// 実行結果
Console.WriteLine(text1);
// こんにちは
// 世界
Console.WriteLine(text2);
// 彼は"こんにちは"と言った
Console.WriteLine(text3);
// C:\Users\Documents
よく使うエスケープシーケンス
実務でよく使われるのは以下の3つです:
-
\n- 改行 -
\"- ダブルクォーテーション -
\\- バックスラッシュ
逐語的文字列リテラル(@を使用)
ファイルパスを扱う場合は、@ を使った逐語的文字列リテラルが便利です。
エスケープシーケンスを無効にして、文字列をそのまま扱う方法:
// @を使うとエスケープ不要
string path = @"C:\Users\Documents"; // バックスラッシュをエスケープ不要
// 複数行の文字列もそのまま記述可能
string multiLine = @"1行目
2行目
3行目";
// ダブルクォーテーションは""でエスケープ
string quote = @"彼は""こんにちは""と言った";
- 逐語的文字列リテラル(
@)を使用した場合、""のみがエスケープシーケンスとして機能します
逐語的文字列リテラル使用時のエスケープシーケンス
| エスケープシーケンス | 説明 | 出力例 |
|---|---|---|
"" |
二重引用符(ダブルクォーテーション) | " |
どうでもいいが逐語的の読み方はちくごてき。
意味:一語一語、言葉通りにそのまま、という意味。
注意点
-
\r\nはWindows環境での改行コードです - Unicodeエスケープは、表現できない文字や特殊文字を扱う際に便利です
おわりに
エスケープシーケンスについてまとめてみました。
実際の実務でよく使うのは:
-
\n- 改行 -
\"- ダブルクォーテーション -
\\- バックスラッシュ
と逐語的文字列リテラル(@)内の
-
""- ダブルクォーテーション
くらいだと思うので、このあたりを押さえておけば、ほとんどの場面で困ることはないかなと思います。
個人的には\aの警告音が面白かったので、機会があれば使ってみたいと思います(使い道は要検討)。
この記事は主に自分用の備忘録ですが、同じくC#を学習している方の参考になれば嬉しいです。