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

Réponses:


870

Utilisez un guillemet double dupliqué.

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

les sorties:

this "word" is escaped

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

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).


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.