Czy mogę uniknąć podwójnego cytatu w dosłownym ciągu literalnym?


534

W dosłownym dosłownym ciągu literowym (@ „foo”) w języku C #, ukośniki odwrotne nie są traktowane jako znaki ucieczki, więc wykonanie \ ", aby uzyskać podwójny cudzysłów, nie działa. Czy jest jakiś sposób na uzyskanie podwójnego cudzysłowu w dosłownym ciągu literalnym ?

Zrozumiałe, że to nie działa:

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

Odpowiedzi:


870

Użyj podwójnego cytatu.

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

wyjścia:

this "word" is escaped

Próbuję użyć @ Html.Raw (), a czterokrotny cytat przerywa mój ciąg
JoshYates1980,

1
Czy możesz go używać bez literału łańcuchowego? Wygląda na to, że Html.Raw () zadbałby o to, aby był dla Ciebie ciągiem ...
Myles

2
Możliwe jest również, aby używać go w połączeniu z interpolacją strun: $@"this ""{wordVar}"" is escaped";.
fdelia

113

Użyj podwójnych cudzysłowów.

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

95

Aby dodać więcej informacji, twój przykład będzie działał bez @symbolu (zapobiega ucieczce za pomocą \), w ten sposób:

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

Działa to w obie strony, ale wolę styl podwójnego cudzysłowu, aby ułatwić pracę, na przykład z nazwami plików (z dużą ilością \ w ciągu).


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.