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";

Antworten:


870

Verwenden Sie ein doppeltes Anführungszeichen.

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

Ausgänge:

this "word" is escaped

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";

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.


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.