问题
给定这样的路径:
G:\path\foo\..\bar\baz.txt
我们可以立即将其解析为大脑,并且操作系统将解析为:
G:\path\bar\baz.txt
以编程方式执行此操作的最快方法是什么?换句话说,是否已经存在一个库函数可以为我做到这一点,所以我不会自己搞砸它。
我对答案的第一枪
// in pseudocode
string[] s = input.split('\')
string output
for ( int i = s.length ; i > 0 ; i-- ) {
if ( s[i] == ".." ) i--;
else output = s[i] + "\" + output
}
return output
但请注意,此答案并未涵盖以下情况(意料之外,但有可能)
G:\path\foo\..\..\bar\baz.txt
那当然是
G:\bar\baz.txt
TSQL函数也将正常工作!
对这个问题并不重要,但我想分享;)
我将其从返回的值(来自Web服务调用)传递到sproc(用于XML切碎),并希望消除
foo\..\
,因为我传入的值用作防止以后进行重复处理的关键。如果我插入G:\path\foo\..\bar\baz.txt
而另一个脚本插入G:\path\bar\baz.txt
,则该文件将被处理两次。
最佳答案
public static string System.IO.Path.GetFullPath(string path)
是您所需要的。
关于c# - 从路径中删除“..”和相关文件夹的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3894394/