2012-02-28 126 views
3

我正在尋找分割URL的方法,例如http://aaa/bbb/ccc/ddd/eee如何獲取URL路徑中的子目錄?

如何獲得「ccc」?當然,它可以分裂它,但它並不有趣。

+0

所以有一個模式,你想匹配?說網址的第三部分? – JaredPar 2012-02-28 15:51:57

+2

'string answer =「ccc」'最優雅可能。現在認真,請你提供一些關於如何找到這個元素的信息,以及你的網址可能是什麼樣的變體? – 2012-02-28 15:53:26

+1

爲什麼要分割一個字符串是「有趣」?不知道是否拖釣,但簡單的事情變得複雜是一個很好的方式來驅動你的同齡人。閱讀關於偶然的複雜性並留意。 – gordy 2012-02-28 15:54:58

回答

20
Uri myuri = new Uri("http://aaa/bbb/ccc/ddd/eee"); 

String str= myuri.Segments[myuri.Segments.Length-3]; 

我認爲這是C#可以達到的最優雅的方式。

編輯:

其實你也可以去myuri.Segments[2]在這裏,有給予同樣的結果。另請注意,此代碼返回"ccc/"作爲結果,所以如果你想得到"ccc"你可以通過這個(也是優雅)的方式。

String str= myuri.Segments[myuri.Segments.Length-3].TrimEnd('/'); 
+0

+1不能比這更優雅...我只是不明白爲什麼你從最後開始計算,而不是僅僅考慮'myuri.Segments [1]' – 2012-02-28 15:55:15

+0

是的,myuri.Segments [2]給出了相同的結果。我總是需要去捕捉Uri的最後部分,所以它就像一個習慣:) – 2012-02-28 16:11:53

+0

如果作者確實希望''ccc「'而不是''ccc /'',然後添加'str = str.TrimEnd('/' );'到上面的代碼。或者,如果您引用了'System.Web'程序集,則可以執行'str = VirtualPathUtility.RemoveTrailingSlash(str);'。 – BACON 2012-02-28 16:12:47