wake-up-neo.net

Wie schreibe ich einen Backslash (\) in eine Zeichenfolge?

Ich möchte etwas C:\Users\UserName\Documents\Tasks in eine textbox schreiben:

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

Ich bekomme den Fehler: 

Nicht erkannte Escape-Sequenz 

Wie schreibe ich einen Backslash in eine Zeichenfolge?

45
user2509901

Das Backslash-Zeichen ("\") ist ein spezielles Escape-Zeichen, das auf andere Sonderzeichen wie neue Zeilen (\n), Registerkarten (\t) oder Anführungszeichen (\") verweist. Wenn Sie selbst ein Backslash-Zeichen einfügen möchten, benötigen Sie zwei Backslashes oder verwenden Sie die @-verbatim-Zeichenfolge: "\\Tasks" oder @"\Tasks".

Lesen Sie die MSDN-Dokumentation/C # Specification , in der die Zeichen beschrieben werden, die mit dem Backslash-Zeichen und die Verwendung des wörtlichen Zeichenkettenliteral mit Escapezeichen versehen werden.

Im Allgemeinen sprechen die meisten C # .NET-Entwickler beim Erstellen von Datei-/Ordnerpfaden die Verwendung der @-verbatim-Zeichenfolgen vor, da sie nicht ständig doppelte Backslashes schreiben müssen und den Pfad direkt kopieren/einfügen können Ich würde vorschlagen, dass Sie sich daran gewöhnen, dasselbe zu tun.


In diesem Fall würde ich wirklich empfehlen, dass Sie die Path.Combine-Utility-Methode wie in @ lordkain's answer verwenden, da Sie sich keine Gedanken darüber machen müssen, ob bereits Backslashes in den Pfaden enthalten sind und sich versehentlich verdoppeln die Schrägstriche oder ganz weglassen, wenn Teile von Pfaden kombiniert werden.

74
Chris Sinclair

Um dem Backslash zu entgehen, verwenden Sie einfach zwei davon: \\

Wenn Sie anderen Dingen entkommen müssen, kann dies hilfreich sein. .

13
Kyle

Es gibt eine spezielle Funktion für diese Path.Combine ()

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

Escape einfach den "\" mit + "\\Tasks" oder verwende eine verbatim-Zeichenkette wie @"\Tasks"

2
user65439

Die vorherige Antwort ist korrekt, aber in diesem speziellen Fall würde ich empfehlen, die Methode System.IO.Path.Combine zu verwenden.

Weitere Informationen finden Sie hier: http://msdn.Microsoft.com/en-us/library/fyy7a5kt.aspx

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

Setzen Sie einen doppelten Backslash anstelle eines einzelnen Backslashs ...

2
Nil

obwohl dieser Beitrag ziemlich alt ist, habe ich etwas ausprobiert, das für meinen Fall funktioniert hat.

Ich wollte eine Stringvariable mit dem folgenden Wert erstellen:

21541_12_1_13\":null

also war mein Ansatz so:

  • erstellen Sie den String mit wörtlich

    zeichenfolge Teilzeichenfolge = @ "21541_12_1_13 \" ": null";

  • entfernen Sie dann die unerwünschten umgekehrten Schrägstriche mithilfe der Funktion Entfernen

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

Ich hoffe, das hilft

0
ksereis