C#のエスケープシーケンスと改行コードの基本をわかりやすく解説!初心者向け入門
生徒
「C#で文字の中に改行とかタブを入れる方法ってありますか?」
先生
「とても良い質問ですね。C#では『エスケープシーケンス』という特別な書き方を使うことで、文字列の中に改行やタブを入れることができるんです。」
生徒
「エスケープシーケンス?なんだか難しそうですね…」
先生
「大丈夫です。実はとてもシンプルなんですよ。実際の例を見ながら理解していきましょう!」
1. エスケープシーケンスとは?
エスケープシーケンスとは、文字列の中で「特別な意味を持つ文字」を表現するための書き方です。C#では、バックスラッシュ(\)を使って「特別な動作」を文字の中に埋め込むことができます。
例えば、「改行」や「タブ(空白のようなスペース)」など、通常の文字では表現できない動きを指示するために使います。
エスケープシーケンスを使うと、コンソール(画面)に出力する文字をより見やすく整えることができます。
2. 代表的なエスケープシーケンス一覧
まずは、C#でよく使われるエスケープシーケンスを一覧で見てみましょう。
| エスケープシーケンス | 意味 | 説明 |
|---|---|---|
\n |
改行 | 次の行に移動します(WindowsでもUnixでも使えます)。 |
\r |
復帰 | 行の先頭に戻ります。古いシステムで使われることがあります。 |
\t |
タブ | 横方向に一定の空白を入れます。 |
\\ |
バックスラッシュ | \自体を文字として出したいときに使います。 |
\" |
ダブルクォーテーション | 文字列の中で「"」を使いたいときに使います。 |
\' |
シングルクォーテーション | 文字の中で「'」を使いたいときに使います。 |
3. 改行コードとは?
改行コードとは、テキストの中で「ここで行を区切る」という意味を持つ特別な記号のことです。パソコンのOSによって、改行コードの種類が異なります。
- Windows:
\r\n(復帰+改行) - macOS / Linux:
\n(改行のみ)
ただし、C#のConsole.WriteLine()を使えば、自動的に環境にあった改行コードを使ってくれるため、特別に意識する必要はあまりありません。
4. 改行を使った出力の例
それでは、実際にC#で改行を使う例を見てみましょう。\nを使うことで、文字列の途中に改行を入れることができます。
Console.WriteLine("こんにちは!\nC#の世界へようこそ!");
このコードを実行すると、コンソールには次のように表示されます。
こんにちは!
C#の世界へようこそ!
文字列の中に「\n」を入れたことで、表示が2行に分かれました。とてもよく使う書き方です。
5. タブやクォーテーションの出力例
次に、タブやクォーテーションを出す例も見てみましょう。
Console.WriteLine("商品名\t価格");
Console.WriteLine("りんご\t100円");
Console.WriteLine("バナナ\t120円");
Console.WriteLine("彼は言いました:\"こんにちは!\"");
実行結果は次の通りです。
商品名 価格
りんご 100円
バナナ 120円
彼は言いました:"こんにちは!"
\tで「タブ空白」を、\"で「ダブルクォーテーション」を表現しています。表のような整った表示をしたいときや、文字の中に「"」を含めたいときにとても便利です。
6. バックスラッシュを文字として出したいとき
エスケープシーケンスの記号である「\」をそのまま出したい場合は、2つ重ねて「\\」と書きます。
Console.WriteLine("フォルダのパスは C:\\Users\\Public です。");
出力結果は次の通りです。
フォルダのパスは C:\Users\Public です。
Windowsのパス(フォルダの場所)などを出力するときによく使います。
7. @を使った逐語的文字列(エスケープ不要)
もう1つの便利な方法として、「@」を使った逐語的文字列(ちくごてきもじれつ)があります。
これは、文字列の前に@をつけることで、エスケープシーケンスを無効化し、そのままの文字として扱う方法です。
Console.WriteLine(@"C:\Users\Public\Documents");
このように書くと、「\\」ではなく「\」を1つ書くだけで済みます。複雑なパスを扱うときや、長い文章を複数行に分けて書きたいときに便利です。
Console.WriteLine(@"こんにちは!
C#の世界へようこそ!");
このように書くと、実際に2行に分かれて出力されます。
こんにちは!
C#の世界へようこそ!
8. エスケープシーケンスを使うときの注意点
エスケープシーケンスはとても便利ですが、間違って書くとエラーの原因になります。
\の後に意味のない文字を書くとエラーになります。- 文字列の中で多用しすぎると、コードが読みにくくなります。
- 長いパスや文章を扱うときは、
@を使うと見やすくなります。
慣れてきたら、状況に応じて「\を使う方法」と「@を使う方法」を使い分けるようにしましょう。
まとめ
C#で文字列を扱ううえで欠かせないのが「エスケープシーケンス」と「改行コード」です。今回の記事では、文字列の中で改行を入れたり、タブを使って整形したり、ダブルクォーテーションやバックスラッシュそのものを表示したりするためのしくみについて、順を追って学んできました。エスケープシーケンスは、普段の文章の中では見えない動きや記号を、プログラムの中で正しく表現するために欠かせない存在です。特に「\n」や「\t」、「\\」といった記法は日常的に登場するため、初学者のうちから自然と扱えるようになっておくことが大きな力になります。 また、改行コードの違いは表面的には気付きにくいものの、WindowsとmacOSやLinuxで扱われ方が異なるため、プログラムを実行する環境によって文字列の見え方が変わることがあります。とはいえ、C#のConsole.WriteLineなど多くの仕組みが環境に合わせて自動処理してくれるため、基本的な使い方を押さえておけば問題ありません。実際には、開発者が意識するべき場面はそれほど多くありませんが、内部ではどう動いているのかを知っておくと応用がききやすくなります。 加えて、「@」を使う逐語的文字列も便利な方法です。複雑なパスを扱うときや、複数行の文章をそのまま書きたいときなど、エスケープシーケンスを大量に使わずにすむため、読みやすいコードを書けるようになります。場面によって書き方を選ぶことで、コードの可読性や保守性が大きく変わることを実感できるでしょう。エスケープシーケンスはシンプルですが、文字列を扱うプログラムの質を大きく左右する重要な要素です。 以下に、今回学んだ内容を整理しながら確認できる簡単なサンプルプログラムを掲載しています。実際に手元で動かしながら、文字列の改行やタブ、特殊文字の扱い方を確かめてみると、理解がより深まります。
サンプルプログラム(振り返り用)
using System;
class EscapeReview
{
static void Main()
{
Console.WriteLine("——エスケープシーケンス基本——");
Console.WriteLine("一行目\n二行目\n三行目");
Console.WriteLine("商品名\t価格");
Console.WriteLine("りんご\t120円");
Console.WriteLine("バナナ\t100円");
Console.WriteLine("彼は言いました:\"こんにちは!\"");
Console.WriteLine("\n——バックスラッシュの出力——");
Console.WriteLine("パスは C:\\\\Users\\\\Public\\\\Documents です。");
Console.WriteLine("\n——逐語的文字列(@)——");
Console.WriteLine(@"C:\Users\Public\Desktop\test");
Console.WriteLine(@"複数行の文章を
そのまま書きたいときにも便利です。");
Console.WriteLine("\n——改行コードの違い——");
Console.Write("Windowsは\\r\\n、");
Console.Write("LinuxやmacOSは\\n が標準です。");
}
}
このプログラムでは、改行やタブ、引用符、バックスラッシュの扱い方、そして逐語的文字列の使い方をまとめて確認できます。実際に表示結果を見ながらそれぞれの記法の違いを体感することで、文字列操作がより直感的に扱えるようになるはずです。
生徒
「先生、エスケープシーケンスって最初は難しそうに見えたけど、実際に使ってみると意味がよく分かりました!」
先生
「そうですね。文字列の中で改行したりタブを入れたりするだけで、表示がとても整いやすくなりますからね。特に‘\n’は本当によく使いますよ。」
生徒
「@で書く逐語的文字列も便利ですね! フォルダのパスを表示したいときにすごく使いやすいと思いました。」
先生
「その通り。状況に応じてエスケープシーケンスと逐語的文字列を使い分けられるようになると、コードが読みやすくなってミスも減ります。とても大事なスキルですよ。」
生徒
「改行コードの違いも理解できました!環境によって動きが違うことがあるんですね。」
先生
「そうです。とはいえ、C#はそこを自動で処理してくれることが多いので、基本を知っておけば十分ですよ。これからも文字列操作をたくさん練習していきましょう。」