我正在使用Path.Combine:
Path.Combine("test1/test2", "test3\\test4");
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
test1/test2\test3\test4
Run Code Online (Sandbox Code Playgroud)
注意正斜杠如何不转换为反斜杠.我知道我可以做string.Replace改变它,但是有更好的方法吗?
Joe*_*Joe 96
正如其他人所说,Path.Combine不会更改分隔符.但是,如果将其转换为完整路径:
Path.GetFullPath(Path.Combine("test1/test2", "test3\\test4"))
Run Code Online (Sandbox Code Playgroud)
生成的完全限定路径将使用标准目录分隔符(Windows的反斜杠).
请注意,这适用于Windows,因为\和/都是合法的路径分隔符:
Path.DirectorySeparatorChar = \
Path.AltDirectorySeparatorChar = /
Run Code Online (Sandbox Code Playgroud)
如果你在Linux上运行.NET Core 2.0,只有正斜杠是合法的路径分隔符:
Path.DirectorySeparatorChar = /
Path.AltDirectorySeparatorChar = /
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它不会将反斜杠转换为正斜杠,因为反斜杠不是合法的备用路径分隔符.
Ria*_*aan 23
因为你的"test1/test2"已经是一个字符串文字,所以Path.Combine不会将'/'更改为'\'.
Path.Combine只会使用操作系统使用的相应路径分隔符来连接2个字符串文字,在这种情况下,Windows,即'\',从那里输出
test1/test2\test3\test4
Run Code Online (Sandbox Code Playgroud)
你最好的选择是string.Replace.
Tim*_*Tim 19
尝试使用该Uri课程.它将为正确的目标机器(/- > \)创建有效的Uris .