给出如此的路径:
G:\path\foo\..\bar\baz.txt
Run Code Online (Sandbox Code Playgroud)
我们可以立即在脑海中解析,并且操作系统将解析为:
G:\path\bar\baz.txt
Run Code Online (Sandbox Code Playgroud)
以编程方式执行此操作的最快方法是什么?换句话说,库函数是否已经存在,它将为我干净利落地做到这一点,所以我不会自己搞砸它.
// 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
Run Code Online (Sandbox Code Playgroud)
但请注意,这个答案不包括案例(意外,但潜在)
G:\path\foo\..\..\bar\baz.txt
Run Code Online (Sandbox Code Playgroud)
这当然是
G:\bar\baz.txt
Run Code Online (Sandbox Code Playgroud)
TSQL函数也可以运行!!!!!
我将它从返回值(关闭webservice调用)传递到sproc(用于XML碎化),并希望消除foo\..\因为我传入的值被用作防止以后重复处理的密钥.如果我插入G:\path\foo\..\bar\baz.txt并插入另一个脚本G:\path\bar\baz.txt文件将被处理两次.
尝试
System.IO.Path.GetFullPath(@"G:\path\foo\..\..\bar\baz.txt");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |