从路径中删除`..`和相关文件夹的最快方法?

时间:2010-10-08 21:21:28

标签: c# .net tsql

问题

给出这样的路径:

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函数也可以运行!!!!!


这个问题不重要,但我觉得要分享;)

我将它从返回值(关闭webservice调用)传递到sproc(用于XML碎化),并希望消除foo\..\,因为我传入的值被用作防止重复的键稍后处理。如果我插入G:\path\foo\..\bar\baz.txt而另一个脚本插入G:\path\bar\baz.txt,则文件将被处理两次。

2 个答案:

答案 0 :(得分:5)

尝试

System.IO.Path.GetFullPath(@"G:\path\foo\..\..\bar\baz.txt");

答案 1 :(得分:3)

public static string System.IO.Path.GetFullPath(string path) 

是你需要的。

相关问题