有没有C#相当于python的os.path.normpath?

时间:2011-03-13 20:53:04

标签: c# python path escaping

在python中,我获取一个原始字符串,然后将其传递给os.path.normpath以使其成为正确的路径名。它逃脱了我需要逃脱的所有东西,我不必担心它。 C#中是否有等价物?

这是一个python片段。

myClassProjectPath = os.path.normpath(r"C:\Users\Documents\SharpDevelop Projects\Project With Spaces\MyClass\bin\Debug")
编辑:我担心斜线和空格。现在,我正在硬编码代码中的路径,但很快就会成为用户输入,所以我无法控制“/”vs“\”

4 个答案:

答案 0 :(得分:3)

同时退房:

string normalizedPath = Path.GetDirectoryName(path);

这也将修复/ vs \

答案 1 :(得分:2)

您始终可以在前面添加@来创建逐字字符串文字。

What's the @ in front of a string in C#?

答案 2 :(得分:2)

尝试Path.Combine没有任何内容的路径,或Path.ChangeExtensionPath.GetExtension。也许其中一个无用的程序(或其他程序)正常化。

除此之外:Pathdoesn’t似乎包含该功能。

或者,您可以自己编程。来自Python doc:

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!

答案 3 :(得分:1)

我认为你们都可以使用

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

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

how to automatically escape the path找到了这些答案。