【发布时间】:2011-12-08 00:31:00
【问题描述】:
在 C# 中从绝对路径中删除驱动器名称、网络路径等的最简洁(但安全)的方法是什么?
例如转换
\\networkmachine\foo\bar
或
C:\foo\bar
到\foo\bar。
似乎已经回答了很多关于路径问题的问题,但我找不到我要找的东西。我自己想到的第一个想法是使用 Path.GetFullPath() 来确保我确实在使用绝对路径,然后只使用正则表达式来查找不与另一个斜杠相邻的第一个斜杠。但是,使用正则表达式进行路径操作似乎有点危险。
获取驱动器号/目标网络机器/等,将字符串转换为 Uri,并询问相对于驱动器/机器的路径,然后转换回字符串可能更明智吗?还是有更好的方法?
【问题讨论】:
-
我已经编写了自己的辅助函数来处理这个问题。只是一些
if...else和字符串操作。 -
那么与我们分享这些方法可能会很好。否则,您的评论毫无用处:)
-
您可以从路径的开头去除从
Path.GetPathRoot()返回的字符串,但这也会从网络路径中去除foo,因为这是共享名称。 -
或者,如果您正在执行大部分这些操作,您可能需要查看 alphafs.codeplex.com,其中包含 .NET 提供的一些附加路径操作选项以及对扩展路径的支持(在标准.NET)