相关疑难解决方法(0)

URL.Combine的URL?

Path.Combine很方便,但在.NET框架中是否有类似的URL功能

我正在寻找这样的语法:

Url.Combine("http://MyUrl.com/", "/Images/Image.jpg")
Run Code Online (Sandbox Code Playgroud)

将返回:

"http://MyUrl.com/Images/Image.jpg"

.net c# asp.net url path

1186
推荐指数
21
解决办法
29万
查看次数

简化相对网址

我想知道是否其他人可以根据System.Uri标准.NET框架中可用的方法或其他方法,提出一种简化相对URL的更好方法。我的尝试有效,但是非常可怕:

public static String SimplifyUrl(String url)
{
    var baseDummyUri = new Uri("http://example.com", UriKind.Absolute);
    var dummyUri = new Uri(baseDummyUri , String.Join("/",
        Enumerable.Range(0, url.Split(new[] { ".." }, StringSplitOptions.None).Length)
                  .Select(i => "x")));

    var absoluteResultUri = new Uri(dummyUri, url);
    var resultUri = dummyUri.MakeRelativeUri(absoluteResultUri);
    return resultUri.ToString();
}
Run Code Online (Sandbox Code Playgroud)

例如,这给出了:

./foo -> foo
foo/./bar -> foo/bar
foo/../bar -> bar
Run Code Online (Sandbox Code Playgroud)

使它如此尴尬的问题是,Uri它本身似乎并没有简化相对的URL,而且MakeRelativeUri仅适用于绝对URL。因此,为了诱使Uri类执行我想要的操作,我构造了具有适当数量的嵌套的基本URL。

我也可以使用System.IO.Path,但是随后我必须搜索并替换反斜杠来斜杠...

必须有更好的方法,对吗?

.net c#

7
推荐指数
1
解决办法
421
查看次数

标签 统计

.net ×2

c# ×2

asp.net ×1

path ×1

url ×1