2014-04-21 64 views
0

當網址爲:http://www.example.com/services/product/Software.aspx,我需要:"product/Software.aspx"如何獲得一個網址的最後兩節

到目前爲止,我只是嘗試了下面的代碼:

string[] SplitUrls = Request.RawURL.Split('/'); 
string CategorynQuery = SplitUrls[SplitUrls.Length - 2] 
         + SplitUrls[SplitUrls.Length - 1]; 

然而,有一些其他方式使用函數IndexOf(),LastIndexOf()等..或任何其他函數做到這一點?或者使用Substring方法的可能性?

請注意,上面的URL只是一個例子,大約有100個這樣的URLS,我需要每個的最後2個部分。

+0

您的解決方案無法添加將最後一個元素與拆分數組元素分開的斜槓字符。除此之外,它看起來很好。如果我是你的話,我不會爲了改善它而掛得太緊。 –

+0

這就是爲什麼我要求一些更好的解決方案 –

回答

2

試試這個,使用LastIndexOf,並子串

string str = "http://www.example.com/services/product/Software.aspx"; 
     int lastIndexOfBackSlash = str.LastIndexOf('/'); 
     int secondLastIndex = lastIndexOfBackSlash > 0 ? str.LastIndexOf('/', lastIndexOfBackSlash - 1) : -1; 

     string result = str.Substring(secondLastIndex, str.Length - secondLastIndex); 

獲得的倒數第二個索引的時候,我也檢查存在 - 很明顯,你可以改變這取決於你的需求:)

+0

當得到「str.LastIndexOf('/',lastIndexOfBackSlash - 1)」中第二個最後一個索引時,我們是否需要查找從位置0到lastIndexOfBackSlash - 1的char'/'? –

+0

不,我們知道最後一次出現/從結尾的位置,因此我們所做的是使用子字符串並從第二次出現,直到字符串的最後一個字符。在這種情況下,它是「product/Software.aspx」@FlopScientist – Mez

+0

因此,它總是從第二次出現在病房。 – Mez

0

您可以使用Uri類:

Uri uri = new Uri("http://myUrl/%2E%2E/%2E%2E"); 
uri.AbsoluteUri; 
uri.PathAndQuery; 
+0

PathAndQuery將給:「Software.aspx」和AbsoluteUri將給:「services/product/Software.aspx」,你能證實嗎? –

0

不太有效,但多了幾分優雅:

string url = "http://www.example.com/services/product/Software.aspx"; 
    var splitted = url.Split('/').Reverse().Take(2).Reverse().ToList(); 
    var str = string.Format("{0}/{1}", splitted[0], splitted[1]);