Come scrivere una barra rovesciata (\) in una stringa?

Voglio scrivere qualcosa come C:\Users\UserName\Documents\Tasks in una textbox :

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

Ottengo l’errore:

Sequenza di escape non riconosciuta.

Come si scrive una barra rovesciata in una stringa?

Il carattere barra rovesciata ( "\" ) è un carattere di escape speciale utilizzato per indicare altri caratteri speciali come nuove linee ( \n ), tabulazioni ( \t ) o virgolette ( \" ). Se si desidera includere un carattere barra rovesciata in sé, hai bisogno di due backslash o usa la stringa @ verbatim: "\\Tasks" o @"\Tasks" .

Leggi la documentazione MSDN / Specifica C # che discute i caratteri che vengono fatti sfuggire usando il carattere barra rovesciata e l’uso del letterale stringa letterale.

In generale, la maggior parte degli sviluppatori di C # .NET tendono a preferire l’utilizzo delle stringhe @ verbatim quando costruiscono percorsi di file / cartelle poiché li salva dal dover scrivere doppie barre inverse e possono direttamente copiare / incollare il percorso, quindi suggerirei hai l’abitudine di fare lo stesso.


Detto questo, in questo caso, in realtà ti consiglierei di utilizzare il metodo di utilità Path.Combine come nella risposta di @ lordkain, in quanto non devi preoccuparti se i backslash sono già inclusi nei percorsi e se si raddoppiano accidentalmente le barre o omettendoli del tutto quando si combinano parti di percorsi.

Per evitare la barra rovesciata, usa semplicemente 2 di questi, come questo: \\

Se hai bisogno di sfuggire ad altre cose, questo potrebbe essere utile. .

C’è una funzione speciale creata per questo Path.Combine ()

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

La risposta precedente è corretta ma in questo caso specifico raccomanderei l’uso del metodo System.IO.Path.Combine .

Puoi trovare maggiori dettagli qui: http://msdn.microsoft.com/en-us/library/fyy7a5kt.aspx

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

Inserisci una doppia barra rovesciata anziché una singola barra retroversa …

Basta sfuggire alla "\" usando + "\\Tasks" o usare una stringa letterale come @"\Tasks"

anche se questo post è abbastanza vecchio ho provato qualcosa che ha funzionato per il mio caso.

Volevo creare una variabile stringa con il valore seguente:

 21541_12_1_13\":null 

quindi il mio approccio era così:

  • build la stringa usando verbatim

    stringa substring = @ “21541_12_1_13 \” “: null”;

  • e quindi rimuovere i backslash indesiderati usando la funzione Remove

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

Spero possa aiutare. Saluti