Нерозпізнана послідовність екрану для рядка шляху, що містить зворотні скісні риски


90

Наступний код генерує помилку компілятора щодо "нерозпізнаної послідовності виходу" для кожної зворотної косої риски:

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

Я думаю, мені потрібно уникнути зворотної косої риси? Як це зробити?

Відповіді:


224

Ви можете використовувати подвійну косу косу риску щоразу

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

або використовуйте символ @

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

Це також допомогло вирішити проблему Html.TextBoxFor, яку я мав. Використання символу @ перед регулярним виразом вирішило нерозпізнану послідовність входів, де подвійний зворотний слеш не вдався.
Джошуа

27

Спробуйте це:

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

Проблема полягає в тому, що в рядку a \є символом екранування. Використовуючи @знак, ви говорите компілятору ігнорувати символи втечі.

Ви також можете пройти, уникнувши \:

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

4
FWIW і, щоб допомогти Googlebot, термін @ "" - це "дослівний буквальний рядок". Хоча я також чув, що його називають просто "рядковим літералом", що технічно включає "звичайний літеральний рядок" просто "". msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx
Марк Брекетт


9

Якщо ваш рядок - шлях до файлу, як у вашому прикладі, ви також можете використовувати шляхи до файлів у стилі Unix:

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

Але інші відповіді мають більш загальні рішення для екранування рядків у C #.


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

Це спрацює, або попередні приклади теж. @ "..." означає ставитись до всього, що міститься в лапках, буквально, щоб ви могли це зробити

@"Hello
world"

Включити буквальний новий рядок. Я більше олдскул і вважаю за краще уникати "\" за допомогою "\\"


Але подвійні "не трактуються буквально.
Вінгер Сендон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.