Escape comillas dobles en una cadena

173

Las comillas dobles se pueden escapar de esta manera:

string test = @"He said to me, ""Hello World"". How are you?";

Pero esto implica agregar caracteres "a la cadena. ¿Existe una función C # u otro método para escapar de las comillas dobles para que no se requiera ningún cambio en la cadena?

Mudassir Hasan
fuente
55
puedes usar \ "Hello World \" de esta manera
Pandian el
1
¿Qué es lo que realmente quieres como resultado? "" se convierte "en una cadena literal.
Roel
Una pregunta similar para C / C ++ (ya que este puede ser el principal éxito del motor de búsqueda): ¿Cómo puedo obtener comillas dobles en un literal de cadena?
Peter Mortensen

Respuestas:

226

No.

Utilice literales de cadena literales como los que tiene o evite "usar la barra diagonal inversa.

string test = "He said to me, \"Hello World\" . How are you?";

La cadena no ha cambiado en ninguno de los casos, hay un solo escape " en ella. Esta es solo una manera de decirle a C # que el carácter es parte de la cadena y no un terminador de cadena.

Oded
fuente
81

Puede usar la barra invertida de cualquier manera;

string str = "He said to me, \"Hello World\". How are you?";

Se imprime;

He said to me, "Hello World". How are you?

que es exactamente lo mismo con;

string str = @"He said to me, ""Hello World"". How are you?";

Aquí hay un DEMO.

" sigue siendo parte de tu cadena.

Echa un vistazo Escape Sequencesy String literalsdesde MSDN.

Soner Gönül
fuente
18

En C # puede usar la barra invertida para colocar caracteres especiales en su cadena. Por ejemplo, para poner ", necesita escribir \". Hay muchos caracteres que escribes usando la barra invertida: Barra invertida con un número:

  • \ 000 nulo
  • \ 010 retroceso
  • \ 011 pestaña horizontal
  • \ 012 nueva línea
  • \ 015 retorno de carro
  • \ 032 sustituto
  • \ 042 comilla doble
  • \ 047 comilla simple
  • \ 134 barra invertida
  • \ 140 acento grave

Barra invertida con otro personaje

  • \ a Bell (alerta)
  • \ b Retroceso
  • \ f Alimentación de formulario
  • \ n Nueva línea
  • \ r retorno del carro
  • \ t Pestaña horizontal
  • \ v Pestaña vertical
  • \ 'Comillas simples
  • \ "Comillas dobles
  • \ Backslash
  • \? Signo de interrogación literal
  • \ ooo carácter ASCII en notación octal
  • \ x hh Carácter ASCII en notación hexadecimal
  • \ x hhhh Carácter Unicode en notación hexadecimal si esta secuencia de escape se usa en una constante de caracteres anchos o en un literal de cadena Unicode. Por ejemplo, WCHAR f = L '\ x4e00' o WCHAR b [] = L "El carácter chino para uno es \ x4e00".
Daniel Antokoletz
fuente
6

Estás malentendido escapando.

Los "caracteres adicionales son parte de la cadena literal; son interpretados por el compilador como solteros " .

El valor real de su cadena sigue siendo He said to me , "Hello World".How are you ?, como verá si lo imprime en tiempo de ejecución.

SLaks
fuente
4

Por favor explica tu problema. Tu dices:

Pero esto implica agregar caracteres "a la cadena.

¿Qué problema es ese? No puede escribir string foo = "Foo"bar"";, porque eso invocará un error de compilación. En cuanto a la parte de adición , en términos de tamaño de cadena que no es cierto:

@"""".Length == "\"".Length == 1
CodeCaster
fuente