【发布时间】:2011-03-12 15:59:52
【问题描述】:
在 C# 中,是否有任何内置方法可以“更正”包含父路径的 URL?所以,我想拿这个:
/foo/bar/../baz.html
然后把它变成……
/foo/baz.html
(“bar”目录被路径中的“..”否定。)
我试过手动滚动这个,但逻辑变得非常丑陋,很快。考虑类似的事情:
/foo1/foo2/../foo3/foo4/foo5/../../bar.html
我的路径是逐段遍历 URL,然后开始编写新的 URL。如果段 2 不是“..”,我只会在新 URL 中包含段 1。但是,在上述情况下,我需要“向前看”并弄清楚我要来多少父路径。
我尝试使用 Path.GetFullPath,从技术上讲,它可以正常工作,但是,伙计,它很难看。 公平警告:您可能不想看这个:
Path.GetFullPath(myUrl).Replace(Path.GetFullPath(@"\"), "").Replace(@"\", "/") + "/";
GetFullPath 从 "C:\" 根目录返回一个文件系统路径,因此您基本上也必须替换它,而不是转换斜杠等。
我最终可能会解决这个问题(并且我上面的丑陋代码在技术上是有效的),但让我震惊的是我不能成为第一个尝试这个的人。谷歌没有帮助。
(另一种语言的答案也会有帮助——至少它会显示逻辑。)
【问题讨论】: