我有一个"基本URL"(它本身是相对的)和一个"子URL",它也是相对的,相对于"基础URL"。我想把这些适当地结合起来。例如:
"some/path/here" + "../other/path" => "some/other/path"
我如何在.NET中做到这一点?Uri
类要求第一个Uri是绝对的。
添加:更多示例,请澄清。
"contents/styles/style.css" + "image.jpg" => "contents/styles/image.jpg"
"contents/folder/style.css" + "../image.jpg" => "contents/image.jpg"
"contents/folder/style.css" + "../images/image.jpg" => "contents/images/image.jpg"
换句话说,在最初的示例中,由于here
没有尾部斜杠,因此应该将其视为一个文件。因此,..
移动到文件夹some
。
尝试:
UriBuilder builder = new UriBuilder();
Uri baseuri = builder.Uri;
builder.Path = "some/path/here";
Uri finalUri = baseuri.MakeRelativeUri(new Uri(builder.Uri, "..\other\path"));
或
Uri finalUri = baseuri.MakeRelativeUri(new Uri(builder.Uri, "file"));