2009-12-18 10 views
462

En literal literal de cadena (@ "foo") en C#, las barras diagonales inversas no se tratan como escapes, por lo que hacer \ "para obtener una comilla doble no funciona. ¿Hay alguna forma de obtener una comilla doble en una palabra textual? ? cadena literal¿Puedo escapar una comilla doble en una literal litera literal?

Esto es comprensible no funciona:

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

Respuesta

752

Usar una doble cita duplicada

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

salidas:.

this "word" is escaped 
+0

estoy tratando de utilizar @ Html.Raw() y la cita cuádruple me rompe la cadena – JoshYates1980

+1

Se puede utilizar sin la cadena literal? Parece que Html.Raw() se encargaría de asegurar que sea una cadena para usted ... – Myles

+0

También es posible usarlo en combinación con la interpolación de cadenas: '$ @" this "" {wordVar} "" se escapó "; '. – fdelia

103

Utilice comillas dobles.

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

Esto debería ayudar a aclarar cualquier duda que pueda tener: c# literals

Aquí es una tabla de los contenidos enlazados:

enter image description here

90

Para añadir algo más de información, tu ejemplo trabajar sin el símbolo @ (evita el escape 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).

1
string str = @"""Hi, "" I am programmer"; 

SALIDA - "Hola" Soy programador

Usted puede referirse '@' prefix before any string in C# .NET

+37

Esta pregunta es bastante antigua y ya tiene una respuesta aceptada de alta calificación: debe intentar responder preguntas que realmente necesitan una respuesta. – kdt

+22

¿Quiso decir "Hola, soy un" programador ""? – hyde

Cuestiones relacionadas