Escapar aspas duplas em uma string


173

As aspas duplas podem ser escapadas assim:

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

Mas isso envolve adicionar caracteres "à string. Existe uma função C # ou outro método para escapar aspas duplas, para que nenhuma alteração na cadeia seja necessária?


5
você pode usar \ "Hello World \" assim
Pandian

1
O que você realmente quer como resultado? "" Torna-se "em uma string literal.
Roel

Uma pergunta semelhante para C / C ++ (como esse pode ser o principal mecanismo de pesquisa): Como obter aspas duplas em uma literal de cadeia de caracteres?
Peter Mortensen

Respostas:


226

Não.

Use literals literalmente, ou escape da "barra invertida em uso.

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

A cadeia não mudou em nenhum dos casos - há uma única escapada " nela. Essa é apenas uma maneira de informar ao C # que o caractere faz parte da cadeia e não um terminador de cadeia.


81

Você pode usar barra invertida de qualquer maneira;

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

Imprime;

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

com exatamente as mesmas impressões;

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

Aqui está um DEMO.

" ainda faz parte da sua string.

Confira Escape Sequencese String literalsno MSDN.


18

Em C #, você pode usar a barra invertida para colocar caracteres especiais em sua string. Por exemplo, para colocar ", você precisa escrever \". Você escreve muitos caracteres usando a barra invertida: Barra invertida com um número:

  • \ 000 nulo
  • \ 010 backspace
  • \ 011 guia horizontal
  • \ 012 nova linha
  • \ 015 retorno de carro
  • \ 032 substituto
  • \ 042 aspas duplas
  • \ 047 aspas simples
  • \ 134 barra invertida
  • \ 140 sotaque grave

Barra invertida com outro caractere

  • \ a Bell (alerta)
  • \ b Backspace
  • \ f Alimentação de formulário
  • \ n Nova linha
  • retorno de carro
  • guia horizontal
  • \ v guia Vertical
  • \ 'Aspa simples
  • \ "Aspas duplas
  • \ Barra invertida
  • \? Ponto de interrogação literal
  • \ ooo caractere ASCII na notação octal
  • \ x hh caractere ASCII em notação hexadecimal
  • \ x hhhh Caractere Unicode em notação hexadecimal, se essa sequência de escape for usada em uma constante de caracteres largos ou em uma literal de seqüência de caracteres Unicode. Por exemplo, WCHAR f = L '\ x4e00' ou WCHAR b [] = L "O caractere chinês para um é \ x4e00".

6

Você está entendendo errado escapar.

Os "caracteres extras fazem parte da cadeia literal; eles são interpretados pelo compilador como um único " .

O valor real da sua string ainda é He said to me , "Hello World".How are you ?, como você verá se a imprime em tempo de execução.


4

Por favor, explique seu problema. Você diz:

Mas isso envolve adicionar caracteres "à string.

Que problema é esse? Você não pode digitar string foo = "Foo"bar"";, porque isso invocará um erro de compilação. Quanto à parte de adição , em termos de tamanho de sequência que não é verdade:

@"""".Length == "\"".Length == 1
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.