解析Domain/hostName的字符串

Boa*_*ler 5 .net c# dns url parsing

客户可以从域名进入网站.他们也可以从他们的联系人进入mailadresses.

知道我们需要找到哪些webted域名可以与mailadresses域相关联的客户.

所以我的想法是从webadress和url中提取主机并进行比较

那么从url获取主机名的最可靠算法是什么?

例如,主机可以是:

foo.com
www.foo.com
http://foo.com
https://foo.com
https://www.foo.com
Run Code Online (Sandbox Code Playgroud)

结果应该始终是foo.com

anu*_*ava 12

而不是依靠不可靠的正则表达式使用System.Uri来为您解析.使用这样的代码:

string uriStr = "www.foo.com";
if (!uriStr.Contains(Uri.SchemeDelimiter)) {
    uriStr = string.Concat(Uri.UriSchemeHttp, Uri.SchemeDelimiter, uriStr);
}
Uri uri = new Uri(uriStr);
string domain = uri.Host; // will return www.foo.com
Run Code Online (Sandbox Code Playgroud)

现在,您只需获得可以使用的顶级域名:

string tld = uri.GetLeftPart( UriPartial.Authority ); // will return foo.com
Run Code Online (Sandbox Code Playgroud)

  • 不应该导致只是"com"? (2认同)
  • @anubhava:uri.GetLeftPart(UriPartial.Authority)不返回根域名.相反,它返回URL的整个左侧部分,从方案开始并以端口结束(如果指定).AFAIK,忽略主机子域部分的唯一方法是使用对String.LastIndexOf()的2遍调用来显式截断它. (2认同)