Kann ich einem doppelten Anführungszeichen in einem wörtlichen Zeichenfolgenliteral entkommen?

534

In einem wörtlichen Zeichenfolgenliteral (@ "foo") in C # werden Backslashes nicht als Escapezeichen behandelt. Daher funktioniert es nicht, \ "ein doppeltes Anführungszeichen zu erhalten. Gibt es eine Möglichkeit, ein doppeltes Anführungszeichen in einem wörtlichen Zeichenfolgenliteral zu erhalten? ?

Das funktioniert verständlicherweise nicht:

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

Antworten:

870

Verwenden Sie ein doppeltes Anführungszeichen.

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

Ausgänge:

this "word" is escaped
Myles
quelle
Ich versuche @ Html.Raw () zu verwenden und das vierfache Zitat bricht meine Zeichenfolge
JoshYates1980
1
Können Sie es ohne das String-Literal verwenden? Es scheint, als würde Html.Raw () dafür sorgen, dass es eine Zeichenfolge für Sie ist ...
Myles
2
Es ist auch möglich, es in Kombination mit einer String-Interpolation zu verwenden : $@"this ""{wordVar}"" is escaped";.
Fdelia
113

Verwenden Sie doppelte Anführungszeichen.

string foo = @"this ""word"" is escaped";
Brandon
quelle
95

Wenn Sie weitere Informationen hinzufügen möchten, funktioniert Ihr Beispiel auf folgende Weise ohne das @Symbol (es verhindert das Escapezeichen mit \):

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

Es funktioniert in beide Richtungen, aber ich bevorzuge den Stil in doppelten Anführungszeichen, damit es einfacher ist, beispielsweise mit Dateinamen (mit viel \ in der Zeichenfolge) zu arbeiten.

Jaestevan
quelle
81

Dies sollte Ihnen helfen, alle Fragen zu klären, die Sie möglicherweise haben: c # -Literale

Hier ist eine Tabelle aus dem verlinkten Inhalt:

Geben Sie hier die Bildbeschreibung ein

rfonn
quelle