c# - 从路径中删除“..”和相关文件夹的最快方法?

标签 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函数也将正常工作!



对这个问题并不重要,但我想分享;)

我将其从返回的值(来自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/

相关文章:

c# - Unity3D 新的 UI 系统和 ListView

c# - try catch 并重新抛出异常

tsql - 查询 SQL Server 2008 表以查找包含 Unicode 字符的列中的值

c# - 是否可以轻松地将 SqlCommand 转换为 T-SQL 字符串?

c# - 使用 .Net Reflector 或其他工具确定 exe 的原始构建位置/路径

.net - connectionManagement 配置是否适用于 SqlConnections?

c# - 使用 .NET 4.5 和 IIS 的 MVC 中的应用程序死锁

.net - 如何获取 Windows 区域位置设置?

sql-server - 哪些值导致从 VARCHAR 到 DATE 的转换失败?

c# - 在 datagridview 中显示 .exe.config 文件并操作设置