¿Puedo escapar de una comilla doble en un literal de cadena literal?


534

En un literal de cadena literal (@ "foo") en C #, las barras invertidas no se tratan como escapes, por lo que hacer \ "para obtener una comilla doble no funciona. ¿Hay alguna manera de obtener una comilla doble en un literal de cadena literal? ?

Es comprensible que esto no funcione:

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

Respuestas:


870

Use una comilla doble duplicada.

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

salidas:

this "word" is escaped

Estoy tratando de usar @ Html.Raw () y la cita cuádruple rompe mi cadena
JoshYates1980

1
¿Puedes usarlo sin la cadena literal? Parece que Html.Raw () se encargaría de asegurar que es una cadena para usted ...
Myles

2
También es posible utilizarlo en combinación con interpolación de cadenas: $@"this ""{wordVar}"" is escaped";.
fdelia

113

Use comillas dobles.

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

95

Para agregar más información, su ejemplo funcionará sin el @símbolo (impide escapar con \), de esta manera:

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

Funcionará en ambos sentidos, pero prefiero el estilo de comillas dobles para que sea más fácil trabajar, por ejemplo, con nombres de archivo (con muchos \ en la cadena).


81

Esto debería ayudar a aclarar cualquier pregunta que pueda tener: literales de c #

Aquí hay una tabla del contenido vinculado:

ingrese la descripción de la imagen aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.