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ć?

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";

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";

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,


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 #.


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 „\\”


Ale podwójne "nie są traktowane dosłownie.
Skrzydłowy Sendon
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.