Есть ли в C # эквивалент os.path.normpath в python? - PullRequest
2 голосов
/ 13 марта 2011

В python я беру необработанную строку, а затем передаю ее в os.path.normpath, чтобы сделать его правильным путем.Он ускользает от всего, что мне нужно, и мне не нужно об этом беспокоиться.Есть ли эквивалент в C #?

Вот фрагмент кода Python.

myClassProjectPath = os.path.normpath(r"C:\Users\Documents\SharpDevelop Projects\Project With Spaces\MyClass\bin\Debug")

РЕДАКТИРОВАТЬ: меня беспокоит косая черта и пробелы.Прямо сейчас я жестко прописываю путь в коде, но скоро это будет ввод пользователя, поэтому я не могу контролировать "/" vs "\"

Ответы [ 4 ]

3 голосов
/ 14 марта 2011

Также проверьте:

string normalizedPath = Path.GetDirectoryName(path);

Это также исправит / против \.

2 голосов
/ 14 марта 2011

Попробуйте Path.Combine путь ни с чем, или Path.ChangeExtension его до Path.GetExtension.Возможно, одна из этих бесполезных процедур (или другая) нормализует.

Кроме того: Path класс не , кажется, содержит функцию.

В качестве альтернативы,Вы можете запрограммировать это самостоятельно.Из документа Python:

Normalize a pathname. This collapses redundant separators and up-level references
so that A//B, A/B/, A/./B and A/foo/../B all become A/B.

It does not normalize the case (use normcase() for that). On Windows, it converts
forward slashes to backward slashes. It should be understood that this may change
the meaning of the path if it contains symbolic links!
2 голосов
/ 13 марта 2011

Вы всегда можете добавить @ впереди для создания буквального строкового литерала.

Что такое @ перед строкой в ​​C #?

1 голос
/ 13 марта 2011

Я думаю, что вы оба можете использовать

string s = s.Replace(@"\", @"\\");

и

string path = @"C:\Users\Documents\SharpDevelop Projects\Project With Spaces\MyClass\bin\Debug";

Нашли ответы на , как автоматически выйти из пути .

...