逐語的文字列リテラルで二重引用符をエスケープできますか?


534

C#の逐語的文字列リテラル(@ "foo")では、バックスラッシュはエスケープとして扱われないため、二重引用符を取得するために\ "を実行しても機能しません。逐語的文字列リテラルで二重引用符を取得する方法はありますか? ?

これは当然動作しません:

string foo = @"this \"word\" is escaped";

回答:


870

重複する二重引用符を使用します。

@"this ""word"" is escaped";

出力:

this "word" is escaped

@ Html.Raw()を使用しようとしていますが、四重引用符が文字列を壊します
JoshYates1980

1
文字列リテラルなしで使用できますか?Html.Raw()がそれがあなたのための文字列であることを保証するように注意するようです...
Myles

2
文字列補間と組み合わせて使用​​することもできます$@"this ""{wordVar}"" is escaped";
fdelia 2018年


95

さらに情報を追加する場合@、この例は記号なしで機能します(\でエスケープされないようにします)。

string foo = "this \"word\" is escaped!";

どちらの方法でも機能しますが、たとえばファイル名(文字列に多くの\が含まれる)を使用する場合など、作業が簡単になるように二重引用符スタイルを使用します。


81

これはあなたが持っているかもしれないどんな質問も明確にするのに役立つはずです:c#リテラル

リンクされたコンテンツの表は次のとおりです。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.