级联url字符串
本文关键字:字符串 url 级联 | 更新日期: 2023-09-27 18:15:09
来自这个问题,我正在寻找一种方法来级联像Path.Combine
的url,用于文件系统做,包括路径参数。
我的输入是以下3个参数:
string host = "test.com"; //also possilbe: "test.com/"
string path = "/foo/"; //also possilbe: "foo", "/", "","/foo","foo/"
string file = "test.temp"; //also possilbe: "/test.temp"
预期结果为
http://test.com/foo/test.temp
这是我能找到的最好的方法,但它并不适用于所有情况:
Uri myUri = new Uri(new Uri("http://" + host +"/"+ path), file);
您可以尝试使用Uri.TryCreate()
:
Uri uri;
bool success = Uri.TryCreate(new Uri("http://" + host), path.Trim('/') + "/" + file.Trim('/'), out uri);
如果url的格式不正确,将返回false
。但是,如果您确信格式是正确的,则可以使用Uri
构造函数:
var uri = new Uri(new Uri("http://" + host), path.Trim('/') + "/" + file.Trim('/'));
您可以使用UriBuilder
类+ IO.Path.Combine
作为Path
:
var builder = new UriBuilder();
builder.Host = host.Trim('/');
builder.Path = Path.Combine(path.Trim('/'), file.Trim('/'));
string result = builder.ToString(); // "http://test.com/foo/test.temp"
如果您想要Uri
- instance,只需使用UriBuilder
的Uri
-property。
给你
string url = string.Join("/", new[] { host, path, file }.Select(x => x.Trim('/'))
.Where(x => !String.IsNullOrEmpty(x)));