2015-07-20 47 views
-1

我不擅長操縱字符串,可以使用一些幫助。從ASP.NET中的AbsolutePath中移除URL字符串的第一部分和最後一部分

我有一個URL(http://localhost/mySite/default.aspx)和我有AbsolutePath作爲我與(/mySite/default.aspx)工作的字符串:

string mySubUrl = Request.Url.AbsolutePath; 

我想要做的將刪除AbsolutePath的第一個和最後一個部分。在這個例子中,刪除「mySite」和「default.aspx」,這會讓我只用「/」。

也可能存在URL長或短的情況,例如http://localhost/mySite/mySubFolder/default.aspx,在這種情況下,在刪除AbsolutePath的第一部分和最後部分後,我將留下'/ mySubFolder /'。

我也嘗試工作一點與URI段,但沒有得到太遠

string absolutePath = Request.Url.AbsolutePath; 
Uri uri = new Uri(absolutePath); 
string[] pathSegments = uri.Segments; 
+0

你能告訴我們你試過嗎? – dman2306

+0

url *的開頭總是*爲「http:// localhost/mySite」嗎? –

+0

@DaveZych它總是[http:// localhost /](http:// localhost /)。 –

回答

0

快速的解決方案:

string[] pathSegments = Request.Url.Segments.Skip(1).Take(Request.Url.Segments.Length - 2).ToArray(); 
+0

謝謝。我試過這個,但'pathSegments'只返回「mySite /」 –

0

Request.Url.AbsolutePath已刪除網址的左側部分爲你,所以它會給你類似/subSection/subFolder/default.aspx

然後,您可以刪除這樣的最後一部分:

string absolutePath = Request.Url.AbsolutePath; 
string[] urlSegments = absolutePath.Split('/'); 
urlSegments = urlSegments.Skip(1).Take(urlSegments.Length - 2) 
string url = string.Join("/", urlSegments); 
+0

感謝您的建議。我試着實現它,但'url'返回完整路徑「/mySite/subSection/subFolder/default.aspx」。 –

+0

再次感謝。我確實嘗試了修改後的代碼,但現在我只能獲得「mySite」。另外,在'urlSegments = urlSegments.Skip(1).Take(urlSegments.Length - 2)'末尾應該有'.ToArray()'? –

+0

這意味着你的'AbsolutePath'是別的東西。你應該能夠調試你的代碼,看看發生了什麼。不,不需要'.ToArray()'。 'urlSegments'已經是一個數組。 – ataravati