記事内にはプロモーションが含まれています

【C#】ダブルクォーテーションのエスケープ方法!3つの書き方と削除・置換テクニック

【C#】ダブルクォーテーションのエスケープ方法!3つの書き方と削除・置換テクニック C#

C#で文字列を扱っていると、必ずと言っていいほど直面するのが「ダブルクォーテーション(")を文字として表示したいのに、文字列の終わりと認識されてエラーになる」という問題です。

例えば、HTMLのタグやJSONデータ、あるいはセリフの中に " を含めたい場合、そのまま記述することはできません。

C#にはこの問題を解決するために、いくつかの記述方法(エスケープ手法)が用意されています。

この記事では、基本となるバックスラッシュを使ったエスケープから、パスの記述に便利な @ を使った方法、そして最新のC#(C# 11以降)で導入された最も強力な「生文字列リテラル(ダブルクォーテーション3つ)」まで、現在の開発現場で役立つ知識をサンプルコード付きで徹底解説します。

【本記事の信頼性】
プロフィール
執筆者:マヒロ
  • 執筆者は元エンジニア
  • SES⇒大手の社内SE⇒独立
  • 現在はプログラミングスクールを運営
  • モットーは「利他の精神」
💻 本記事の検証環境(2026年2月確認)
  • OS:Windows 11 / macOS Sequoia
  • IDE:Visual Studio / VS Code / IntelliJ IDEA
  • その他:Chrome DevTools / 各言語最新安定版

※本メディアでは、上記環境にてコードの動作と情報の正確性を検証済みです。

方法1:バックスラッシュでエスケープする(基本)

最も基本的で、古くからある方法がエスケープシーケンスを使うやり方です。

ダブルクォーテーションの直前にバックスラッシュ \(環境によっては円記号 ¥)を置くことで、「これは文字列の終わりではなく、ただの文字です」とコンパイラに伝えます。

基本的な書き方

using System;

class Program
{
    static void Main()
    {
        // "Hello" と表示したい場合
        // 直前に \ を付ける
        string message = "He said, \"Hello, C# World!\"";

        Console.WriteLine(message);
    }
}

実行結果

He said, "Hello, C# World!"

\" と記述することで、画面上には " が1つ表示されます。
短い文字列や、単発でダブルクォーテーションを使いたい場合にはこの方法が最も手軽です。

しかし、JSONデータのように " が大量に出てくる場合、\" だらけになってしまいコードが非常に読みづらくなる(可読性が下がる)というデメリットがあります。

方法2:逐語的文字列リテラル「@」を使う(エスケープしない)

ファイルパスや正規表現など、バックスラッシュを多用する文字列を扱う際に便利なのが、文字列の先頭に @ を付ける逐語的(ちくごてき)文字列リテラルです。

この記法では、バックスラッシュがエスケープ文字として機能しなくなるため、パスなどをそのまま書くことができます。

ただし、ダブルクォーテーションを表示したい場合には、少し特殊なルールがあります。

ダブルクォーテーションを2つ重ねる

@ を付けた文字列の中で " を表現するには、"" のように2つ重ねて記述します。

using System;

class Program
{
    static void Main()
    {
        // @を付けると、" を表現するには "" と書く
        string json = @"{ ""id"": 1, ""name"": ""Apple"" }";

        Console.WriteLine(json);
        
        // ファイルパスでの利用例(\をエスケープしなくて良いので楽)
        string path = @"C:\Users\MyName\Documents\Data";
        Console.WriteLine(path);
    }
}

実行結果

{ "id": 1, "name": "Apple" }
C:\Users\MyName\Documents\Data

@"{ ""id"": 1 }" のように書くことで、出力結果は { "id": 1 } となります。

\ をエスケープしなくて済むメリットは大きいですが、" が多いテキストでは結局 "" を連打することになるため、やはり記述が面倒な場面があります。

方法3:生文字列リテラル「”””」を使う(推奨・最新)

C# 11(.NET 7以降)で導入された生文字列リテラル(Raw String Literals)は、これまでの悩みをすべて解決する強力な機能です。

ダブルクォーテーションを3つ(以上)連続させた """ で文字列を囲むことで、その中身を「見たまま」文字列として扱えます。

エスケープなしでそのまま書ける

using System;

class Program
{
    static void Main()
    {
        // ダブルクォーテーション3つで囲む
        string html = """
            <div class="container">
                <p>Hello, "World"!</p>
            </div>
            """;

        Console.WriteLine(html);
    }
}

実行結果

<div class="container">
    <p>Hello, "World"!</p>
</div>

""" で囲まれた範囲内では、" を1つだけ書いても、文字列の終わりとは認識されず、そのまま文字としての " になります。
\ もそのまま表示されます。

さらに、開始と終了の """ の位置に基づいてインデント(空白)を自動的に除去してくれる機能もあるため、コードの見た目をきれいに保ちながら、HTMLやJSON、SQLなどを貼り付けることができます。

現在の環境であれば、複雑な文字列にはこの方法を使うのがベストプラクティスです。

3つ以上のダブルクォーテーションを含みたい場合

もし文字列の中に """(3連続のダブルクォーテーション)自体を含めたい場合は、囲む記号を4つ """" に増やせばOKです。

囲む数より少ない連続クォートはすべて文字として扱われます。

文字列内のダブルクォーテーションを削除・置換する方法

「エスケープして表示したい」のではなく、「データに含まれているダブルクォーテーションを取り除きたい」というケースもあるでしょう。

CSVデータの読み込みなどでよく発生する要件です。

Replaceメソッドで空文字に置換する

using System;

class Program
{
    static void Main()
    {
        string input = "\"Apple\", \"Banana\", \"Cherry\"";
        
        // " を空文字に置換して削除する
        // 引数で " を指定するために \" と書く必要がある
        string result = input.Replace("\"", "");

        Console.WriteLine($"元データ: {input}");
        Console.WriteLine($"削除後  : {result}");
    }
}

実行結果

元データ: "Apple", "Banana", "Cherry"
削除後  : Apple, Banana, Cherry

Replace("\"", "") と記述します。

ここでもメソッドの引数として " を渡すために、\" というエスケープ記法が必要になる点に注意してください。

これにより、文字列中のすべてのダブルクォーテーションが一括で削除されます。

先頭と末尾だけ削除したい場合(Trim)

文字列の中身ではなく、囲っている外側のクォートだけを外したい場合は Trim を使います。

string text = "\"Hello\"";
// 端にある " だけを削除
string trimmed = text.Trim('"'); 
// 結果: Hello

引数に char 型の '"'(シングルクォーテーションで囲む)を渡すことで、両端の記号を除去できます。

補足:シングルクォーテーションのエスケープは?

C#において、文字列(string)の中でシングルクォーテーション ' を使う場合は、エスケープ不要です。
そのまま記述できます。

string s = "I'm a programmer."; // OK

ただし、文字型(char)として定義する場合(' 'で囲む場合)は、エスケープが必要です。

char c = '\''; // エスケープが必要

C#のスキルを活かして年収を上げる方法

以上、C#でのダブルクォーテーションのエスケープ方法について解説してきました。

なお、C#のスキルがある場合には、「転職して年収をアップさせる」「副業で稼ぐ」といった方法を検討するのがおすすめです。

業務システム開発やアプリ開発、ゲーム開発において需要の高いC#を扱えるエンジニアは、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。

なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。
今すぐ転職する気がなくとも、とりあえず転職エージェントに無料登録しておくだけで、スカウトが届いたり、思わぬ好待遇の求人情報が送られてきたりするというメリットがあります。
併せて、副業案件を獲得できるエージェントにも登録しておくと、空いている時間を活かして稼げるようなC#の案件を探しやすくなります。

転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。
エンジニアのキャリア・スキルアップ相談窓口
当ブログの読者に選ばれている、実績豊富な転職エージェントを厳選しました。
【転職】年収・環境を改善したい
年収アップにこだわりたい方 (平均アップ額138万円の実績)
未経験・経験者問わず幅広く探したい方
業界に精通した担当者に相談したい方
ゲーム業界への転職を志望する方
エンジニア未経験からキャリアを築く方
【独立】フリーランスとして稼ぎたい
国内最大級のフリーランス案件数から比較したい方
週1〜3日など柔軟な働き方を希望する方
【学習】スキルに不安のある方向け(格安スクール「デイトラ」)
C#
スポンサーリンク
code-izumiをフォローする