Nierozpoznana sekwencja ucieczki dla ciągu ścieżki zawierającego ukośniki odwrotne

90

Poniższy kod generuje błąd kompilatora dotyczący „nierozpoznanej sekwencji ucieczki” dla każdego ukośnika odwrotnego:

string foo = "D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

Chyba muszę uciec od ukośnika odwrotnego? Jak mogę to zrobić?

Kjensen
źródło

Odpowiedzi:

224

Za każdym razem możesz użyć podwójnego odwrotnego ukośnika

string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";

lub użyj symbolu @

string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Brandon
źródło
Pomogło to również rozwiązać problem Html.TextBoxFor, który miałem. Użycie znaku @ przed wyrażeniem regularnym rozwiązało nierozpoznaną sekwencję sterującą, w której podwójny ukośnik odwrotny nie powiódł się.
Joshua,
27

Spróbuj tego:

string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

Problem polega na tym, że w łańcuchu a \jest znakiem ucieczki. Używając @znaku, mówisz kompilatorowi, aby ignorował znaki ucieczki.

Możesz także poradzić sobie z ucieczką przed \:

string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
Josh
źródło
4
FWIW i aby pomóc Googlebotowi, termin oznaczający @ "" to „dosłowny ciąg znaków”. Chociaż słyszałem również, że jest to określane jako „dosłowny ciąg znaków”, technicznie obejmuje to „zwykły literał ciągu” po prostu „”. msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx
Mark Brackett,
13
var foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Piotr Czapla
źródło
Z
drugiej strony
9

Jeśli ciąg jest ścieżką do pliku, jak w przykładzie, możesz również użyć ścieżek do plików w stylu uniksowym:

string foo = "D:/Projects/Some/Kind/Of/Pathproblem/wuhoo.xml";

Ale inne odpowiedzi mają bardziej ogólne rozwiązania dotyczące ucieczki ciągów w C #.

Scott Weinstein
źródło
5
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";

To zadziała, albo poprzednie przykłady też. @ „...” oznacza dosłowne traktowanie wszystkiego między cudzysłowami, więc możesz to zrobić

@"Hello
world"

Aby dołączyć dosłowny znak nowej linii. Jestem bardziej stara i wolę uciec „\” z „\\”

Bob Kaufman
źródło
Ale podwójne "nie są traktowane dosłownie.
Skrzydłowy Sendon