什么是最简洁(但安全)的方法,在C#中从绝对路径中删除驱动器名称、网络路径等?
例如,将以下内容转换:
\\networkmachine\foo\bar
或者C:\foo\bar
要转换为\foo\bar
。
看起来已经有很多关于路径问题的答案了,但我还是没有找到我想要的。 我自己首先想到的是使用Path.GetFullPath()来确保我确实在使用绝对路径,然后只需使用正则表达式查找不与另一个斜杠相邻的第一个斜杠。 但是,使用正则表达式进行路径操作似乎有些危险。
也许更明智的做法是获取驱动器号/目标网络机器等,将字符串转换为Uri,然后请求相对于驱动器/机器的路径,然后再将其转换回字符串? 还是有更好的方法吗?
if
...else
和字符串操作。 - Uwe KeimPath.GetPathRoot()
返回的字符串中去掉路径的开头,但这也会将网络路径中的“foo”(共享名称)一并去掉。 - DeCaf