如何尽可能少地努力(使用一些已经存在的设施)转换路径c:\aaa\bbb\..\ccc如何c:\aaa\ccc?
naw*_*fal 55
我会这样写:
public static string NormalizePath(string path)
{
return Path.GetFullPath(new Uri(path).LocalPath)
.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar)
.ToUpperInvariant();
}
Run Code Online (Sandbox Code Playgroud)
这应该处理几个场景,如
uri和潜在的逃脱角色,比如
file:/// C:/Test%20Project.exe - > C:\ TEST PROJECT.EXE
由点指定的路径段表示当前或父目录
c:\ aaa\bbb\..\ccc - > C:\ AAA\CCC
波浪线缩短(长)路径
C:\ Progra~1\ - > C:\ PROGRAM FILES
不一致的目录分隔符
C:/ Documents\abc.txt - > C:\ DOCUMENTS\ABC.TXT
除此之外,它可以忽略大小写,尾随\目录定界符等.
lep*_*pie 44
Path.GetFullPath 也许?
bdu*_*kes 21
规范化是.NET中Uri类的主要职责之一.
var path = @"c:\aaa\bbb\..\ccc";
var canonicalPath = new Uri(path).LocalPath; // c:\aaa\ccc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20570 次 |
| 最近记录: |