正在从URl获取域名

本文关键字:获取 域名 URl | 更新日期: 2023-09-27 18:27:07

我需要从任何Url中提取准确的域名。

例如,

  • URL1:"http://www.something.subdomain.com"-->它应该输出到-->http://something.subdomain.com
  • URL2:"http://www.something.com"-->它应该输出到-->http://something.com
  • URL3:"http://www.1234.seequip.com"-->它应该输出到-->http://1234.seequip.com
  • URL4:"https://secure.subdomain.com"-->它应该输出到-->https://secure.subdomain.com

这是我迄今为止所尝试的,但没有返回我所期望的确切结果,有人能在这里帮助我吗?

   public static string GetDomainName(string domainURL) {
            string domain = new Uri(domainURL).DnsSafeHost.ToLower();
            var tokens = domain.Split('.');
            if (tokens.Length > 2)
            {
                //Add only second level exceptions to the < 3 rule here
                string[] exceptions = { "info", "firm", "name", "com", "biz", "gen", "ltd", "web", "net", "pro", "org" };
                var validTokens = 2 + ((tokens[tokens.Length - 2].Length < 3 || exceptions.Contains(tokens[tokens.Length - 2])) ? 1 : 0);
                domain = string.Join(".", tokens, tokens.Length - validTokens, validTokens);
            }
            return domain;
    }

正在从URl获取域名

使用在系统命名空间中找到的URI类

Uri myUri = new Uri("http://www.something.com/");

它具有主机等属性,这些属性应该可以满足您的需要。。。

请尝试此代码:

public string GetDomainName(string domainURL)
{
    string domain = new Uri(domainURL).DnsSafeHost.ToLower();
    domain = domainURL.Split(':')[0] + "://" + domain;
    return domain;
}

我认为您应该从字符串的开头分割并获得协议,并将其附加到域中。如果您传递任何没有像http://这样的协议的URL,则代码new Uri()方法将抛出错误。

因此,我认为代码domainURL.Split(':')[0] + "://" + domain;将适用于您。

请使用您提出的输入进行测试。

以下是使用Uri类提取部分,然后将所需的部分重新组合在一起的代码。

然而,似乎您特别希望删除"www."部分,所以我为此添加了一个字符串替换。

Uri MyUri = new Uri(domainURL);
string Result = MyUri.GetLeftPart(UriPartial.Scheme);
Result += MyUri.GetComponents(UriComponents.Host, UriFormat.SafeUnescaped).Replace("www.", string.Empty);
return Result;

试试这个:

        Uri myUri = new Uri("http://www.something.subdomain.com");
        string host = myUri.Host;

主持人就是你要找的。