c# uri 取文件名,从获取绝对名称C#中的URI / URL的父名称

Given an absolute URI/URL, I want to get a URI/URL which doesn't contain the leaf portion. For example: given http://foo.com/bar/baz.html, I should get http://foo.com/bar/.

The code which I could come up with seems a bit lengthy, so I'm wondering if there is a better way.

static string GetParentUriString(Uri uri)

{

StringBuilder parentName = new StringBuilder();

// Append the scheme: http, ftp etc.

parentName.Append(uri.Scheme);

// Appned the '://' after the http, ftp etc.

parentName.Append("://");

// Append the host name www.foo.com

parentName.Append(uri.Host);

// Append each segment except the last one. The last one is the

// leaf and we will ignore it.

for (int i = 0; i < uri.Segments.Length - 1; i++)

{

parentName.Append(uri.Segments[i]);

}

return parentName.ToString();

}

One would use the function something like this:

static void Main(string[] args)

{

Uri uri = new Uri("http://foo.com/bar/baz.html");

// Should return http://foo.com/bar/

string parentName = GetParentUriString(uri);

}

Thanks,

Rohit

解决方案

This is the shortest I can come up with:

static string GetParentUriString(Uri uri)

{

return uri.AbsoluteUri.Remove(uri.AbsoluteUri.Length - uri.Segments.Last().Length);

}

If you want to use the Last() method, you will have to include System.Linq.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值