2013-08-30 14 views
30

chcę napisać coś takiego C:\Users\UserName\Documents\Tasks w textbox:Jak napisać ukośnik odwrotny () w ciągu znaków?

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

pojawia się błąd:

Unrecognized escape sequence.

Jak mogę napisać ukośnik w ciągu?

+7

Użyj podwójnego ukośnika odwrotnego \\ lub wstaw @ na początku łańcucha znaków – Andrew

+0

http://stackoverflow.com/questions/1302864/unrec ukośne-ucieczkowe-sekwencyjne-do-ścieżki-zawierające-ukośniki odwrotne –

+1

Dlaczego w dół ?? –

Odpowiedz

54

Odwrotny ukośnik ("\") postać jest szczególna postać ucieczka używany do wskazania innych znaków specjalnych, takich jak nowe linie (\n), klapki (\t) lub cudzysłów (\"). Jeśli chcesz uwzględnić sam znak ukośnika odwrotnego, potrzebujesz dwóch odwrotnych ukośników lub użyj wiersza dosłownego: lub @"\Tasks".

Przeczytaj MSDN documentation/C# Specification, który omawia znaki, które są ujęte w znaki, używając znaku ukośnika odwrotnego i użycia dosłownego ciągu literowego.

Ogólnie mówiąc, większość programistów C# .NET faworyzują używając @ wierne sznurki przy tworzeniu pliku/ścieżki folderów ponieważ zapisuje je od konieczności pisania podwójnych ukośników cały czas i można je bezpośrednio kopiuj/wklej ścieżkę , więc sugerowałbym, żebyś miał zwyczaj robić to samo.


To wszystko zostało powiedziane, w tym przypadku, chciałbym faktycznie polecam użyć metody Path.Combine użytkową jak w @lordkain's answer jak wtedy nie trzeba się martwić o to, czy backslashe są już zawarte w ścieżkach i przypadkowo doubling- w górę ukośniki lub całkowicie je pomijając podczas łączenia części ścieżek.

+1

To nie działa dla mnie. @ "\" po prostu tworzy "\\" – MattyAB

+3

@MattyAB: Jak kontrolujesz wynikowy ciąg? Jeśli sprawdzasz to w debugerze Visual Studio, pokaże to z dodanymi znakami escape. –

1

Wystarczy uciec "\" za pomocą + "\\Tasks" lub użyć dosłownie ciąg jak @"\Tasks"

+1

Myślę, że zostałeś skrócony przez przecenę - bez ucieczki "kodu", wyglądało na to, że twoja odpowiedź była po prostu "\ Tasks"! – StuartLC

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

Put podwójny backslash zamiast pojedynczego backslashem ...

+0

... ale nie potrójne cięcie. – StuartLC

4

Istnieje specjalna funkcja wykonane dla tego Path.Combine()

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