Замените '\' на '/' в приложении String C # WinForm - PullRequest
3 голосов
/ 11 сентября 2009

Может ли кто-нибудь предложить способ заменить обратную косую черту '\' на косую черту '/' в строке. По сути, строка - это путь. Я пытался использовать метод Replace () для строки, но он не работает.

Спасибо

Ответы [ 2 ]

10 голосов
/ 11 сентября 2009

Вам нужно будет захватить результат Replace (строки неизменны) и убедиться, что вы используете экранирование символов для \:

string path = Directory.GetCurrentDirectory();
path = path.Replace("\\", "/");

Для информации; большинство встроенных методов примут любой из них, и, если вы работаете в Windows, \ будет более распространенным в любом случае. Если вы хотите URI, то используйте Uri:

string path = Directory.GetCurrentDirectory();
Uri uri = new Uri(path); // displays as "file:///C:/Users/mgravell/AppData/Local/Temporary Projects/ConsoleApplication1/bin/Debug"
string abs = uri.AbsolutePath; // "C:/Users/mgravell/AppData/Local/Temporary%20Projects/ConsoleApplication1/bin/Debug"
1 голос
/ 20 сентября 2009

Это немного связано, но мне нравится упоминать об этом, когда я вижу используемый символ \; на всякий случай некоторые не знают.

Обратите внимание, что в C # есть синтаксический символ перехода, символ @. Вы можете использовать его для экранирования зарезервированных слов, но чаще вы будете использовать его для экранирования строковых литералов.

Например, если вы собираетесь использовать символ \ в литерале и не хотите экранировать его от другого \, вы можете поставить префикс @ перед префиксом. Таким образом, приведенный выше код может быть записан как:

path = path.Replace(@"\", "/")

Мне очень полезно работать с путями к файлам:

var path = "C:\\Documents and Settings\\My Documents\\SomeFile.txt";

можно записать как:

var path = @"C:\Documents and Settings\My Documents\SomeFile.txt";

Это помогает удобочитаемости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...