Como eu escrevo uma barra invertida (\) em uma string?

Eu quero escrever algo como este C:\Users\UserName\Documents\Tasks em uma textbox :

 txtPath.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)+"\Tasks"; 

Eu recebo o erro:

Sequência de escape não reconhecida.

Como eu escrevo uma barra invertida em uma string?

O caractere de barra invertida ( "\" ) é um caractere de escape especial usado para indicar outros caracteres especiais, como novas linhas ( \n ), tabulações ( \t ) ou aspas ( \" ). Se você deseja include um caractere de barra invertida Em si, você precisa de duas barras invertidas ou usar a string @ verbatim: "\\Tasks" ou @"\Tasks" .

Leia a documentação do MSDN / Especificação do C #, que discute os caracteres que são escapados usando o caractere de barra invertida e o uso do literal de cadeia literal.

De modo geral, a maioria dos desenvolvedores de C # .NET tendem a preferir usar as strings @ verbatim ao criar caminhos de arquivos / pastas, já que os salva de ter que gravar barras invertidas duplas o tempo todo e copiar / colar diretamente o caminho, então sugiro que você tem o hábito de fazer o mesmo.


Isso tudo dito, neste caso, eu realmente recomendaria que você usasse o método do utilitário Path.Combine como na resposta do @lordkain, assim você não precisa se preocupar se as barras invertidas já estão incluídas nos caminhos e se as duplicações foram duplicadas acidentalmente ou omitindo-os completamente ao combinar partes de caminhos.

Para escaping da barra invertida, basta usar 2 deles, assim: \\

Se você precisar escaping de outras coisas, isso pode ser útil. .

Existe uma function especial feita para este Path.Combine ()

 var folder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); var fullpath = path.Combine(folder,"Tasks"); 

A resposta anterior está correta, mas neste caso específico eu recomendaria usar o método System.IO.Path.Combine .

Você pode encontrar mais detalhes aqui: http://msdn.microsoft.com/en-us/library/fyy7a5kt.aspx

 txtPath.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)+"\\\Tasks"; 

Coloque uma barra invertida dupla em vez de uma única barra invertida …

Apenas escape do "\" usando + "\\Tasks" ou use uma string textual como @"\Tasks"

Embora este post seja bem antigo, eu tentei algo que funcionou no meu caso.

Eu queria criar uma variável de string com o valor abaixo:

 21541_12_1_13\":null 

então minha abordagem foi assim:

  • construa a string usando textualmente

    string substring = @ “21541_12_1_13 \” “: nulo”;

  • e remova as barras invertidas indesejadas usando a function Remover

    string newsubstring = substring.Remove (13, 1);

Espero que ajude. Felicidades