2014-10-20 83 views
0

我有一個「基本URL」(它本身是相對的)和一個「子URL」,它也是相對於「基本URL」的。我想正確地結合這些。例如:如何計算在.NET中的相對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

+1

你的意思' 「一些/路徑/這裏」 + 「../../other/path」=>「有些/其它/路徑「'? – artm 2014-10-20 11:34:56

+0

@artm - 不,我會舉更多的例子。 – 2014-10-20 11:37:45

+1

請更好地解釋你的例子。它不是很清楚,我也想到其他人。謝謝。 – MSX 2014-10-20 11:40:34

回答

3

嘗試:

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")); 
+0

哇,這實際上起作用了!偷偷摸摸,但工作! :) – 2014-10-20 11:59:20