C# 如何在URL路径中获取子目录?

C# 如何在URL路径中获取子目录?,c#,.net,string,url-parsing,C#,.net,String,Url Parsing,我正在寻找一种拆分URL的方法,例如 如何获得“ccc”?当然可以拆分它,但这并不有趣 Uri myuri = new Uri("http://aaa/bbb/ccc/ddd/eee"); String str= myuri.Segments[myuri.Segments.Length-3]; 我认为这是坐C#能到达的最优雅的方式 编辑: 实际上你也可以使用myuri.Segments[2]在这里,那里给出相同的结果。另外请注意,此代码返回的结果是“ccc/”,因此,如果您想获得“ccc

我正在寻找一种拆分URL的方法,例如

如何获得“ccc”?当然可以拆分它,但这并不有趣

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

String str= myuri.Segments[myuri.Segments.Length-3];  
我认为这是坐C#能到达的最优雅的方式

编辑:

实际上你也可以使用myuri.Segments[2]在这里,那里给出相同的结果。另外请注意,此代码返回的结果是
“ccc/”
,因此,如果您想获得
“ccc”
,您可以使用此方法(也很优雅)


那么,您是否希望匹配某个模式?说出url的第三部分?使用
Uri
类:
string answer=“ccc”
尽可能优雅。现在,认真地说,你能提供一些关于如何找到那个元素的更多信息,以及你的url可能有哪些变化吗?为什么像拆分字符串这样的事情会“有趣”?不确定是不是把简单的事情复杂化才是让你的同龄人疯狂的好方法。读一读偶然的复杂性并留心。我不会说它是“优雅的”,而会说它是“恰当的”。
Uri
类提供了足够的功能来处理Uri,你猜对了,+1再优雅不过了。。。我只是不明白为什么你从最后开始计数,而不是只取
myuri.Segments[1]
Yes,myuri.Segments[2]给出了相同的结果。我总是需要捕捉Uri的最后一部分,所以这就像一个习惯:)如果作者真的想要
“ccc”
而不是
“ccc/”
,那么添加
str=str.TrimEnd('/')到上述代码。或者,如果您引用了
System.Web
程序集,则可以执行
str=virtualpathulity.RemoveTrailingSlash(str)
@mesiesta:你说得对,这是段[2],而不是段[1]。浏览MSDN上的文档时,我没有读到段[0]总是“/”的位置
String str= myuri.Segments[myuri.Segments.Length-3].TrimEnd('/');