Puis-je échapper à une citation double dans un littéral de chaîne textuelle?

534

Dans un littéral de chaîne verbatim (@ "foo") en C #, les barres obliques inverses ne sont pas traitées comme des échappements, donc faire \ "pour obtenir un guillemet double ne fonctionne pas. Est-il possible d'obtenir un guillemet double dans un littéral de chaîne verbatim ?

Cela ne fonctionne naturellement pas:

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

Réponses:

870

Utilisez un guillemet double dupliqué.

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

les sorties:

this "word" is escaped
Myles
la source
J'essaie d'utiliser @ Html.Raw () et la citation quadruple casse ma chaîne
JoshYates1980
1
Pouvez-vous l'utiliser sans le littéral de chaîne? Il semble que Html.Raw () se chargerait de s'assurer que c'est une chaîne pour vous ...
Myles
2
Il est également possible de l' utiliser en combinaison avec une interpolation de chaîne: $@"this ""{wordVar}"" is escaped";.
fdelia
113

Utilisez des guillemets doubles.

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

Pour ajouter plus d'informations, votre exemple fonctionnera sans le @symbole (il empêche l'échappement avec \), de cette façon:

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

Cela fonctionnera dans les deux sens, mais je préfère le style de guillemet double pour qu'il soit plus facile de travailler, par exemple, avec les noms de fichiers (avec beaucoup de \ dans la chaîne).

jaestevan
la source
81

Cela devrait aider à clarifier toutes les questions que vous pourriez avoir: littéraux c #

Voici un tableau du contenu lié:

entrez la description de l'image ici

rfonn
la source