我需要删除URL
中路径的最左边部分。例如:
http://mywebsite.com/part1/part2/part3
预期结果:
http://mywebsite.com/part2/part3
我想以最易读的方式完成此操作,例如使用 UriBuilder
。
我看到它具有属性Path
,但是有没有一种方法可以操纵路径而不必使用某种形式的修剪和切割字符串本身呢?
答案 0 :(得分:3)
使用UriBuilder
和一些字符串操作就足够容易了:
var builder = new UriBuilder("http://mywebsite.com/part1/part2/part3");
builder.Path = builder.Path.Substring(builder.Path.IndexOf('/',1));
Console.WriteLine(builder.Uri);
答案 1 :(得分:2)
最后一个答案,提到URI.Segments属性,该属性返回所有已经方便地分割为字符串数组的路径部分,如果新URI应该由不同部分组成,这可能会派上用场。
在某些情况下,它可以提供更多的灵活性。
在这种情况下,Segments
数组是:
{string[4]}
[0]: "/"
[1]: "part1/"
[2]: "part2/"
[3]: "part3"
因此,在这种情况下,Path
的构建方式如下:
var builder = new UriBuilder("http://mywebsite.com/part1/part2/part3");
builder.Path = string.Concat(builder.Uri.Segments.Skip(2));
builder.URI.AbsolutePath
将为:
http://mywebsite.com/part2/part3
答案 2 :(得分:-1)
仅使用UriBuilder
我做的最干净的方法是在下面的UriBuilder
上使用扩展方法,这是我很快就提出的一个例子
public static UriBuilder RemoveFirstPartOfPath(this UriBuilder b)
{
var s = b.Path.Split('/');
var shorter = s.Skip(1);
b.Path = string.Join("/", shorter);
return b;
}