在C#中将URL字符串解析为协议字符串、服务器字符串和域字符串



我对C#编程还比较陌生,解析URL字符串时遇到了问题。我想要一个URLhttp://server.example.org并将其拆分为单独的字符串,如协议、服务器和域名。到目前为止,我的代码是这样的:

string url = "http://server.example.org";
string protocol = url.Substring(0, url.IndexOf(":")); // parse from beginning to colon to get protocol
string server = url.Substring(url.IndexOf("//") + 2, url.IndexOf(".")); // parse from // + 2 to first . for server
string domain = url.Substring(url.IndexOf(".") + 1); // the rest of the string should be the domain

协议字符串正确地显示http,域正确地显示example.org。但服务器字符串显示为server.example而不是预期的server。我做错了什么?

Uri构造函数能够解析URI。它拥有丰富的属性,赋予你各种属性。但是,如果您想拆分主机,则需要手动

var uri = new Uri("http://server.example.org");
var split = uri.Host.Split('.');
Console.WriteLine(uri.Scheme);
Console.WriteLine(uri.Host);
Console.WriteLine(split[0]);
Console.WriteLine(string.Join(".",split.Skip(1)));

输出

http
server.example.org
server
example.org

最新更新