.net 获取域名的顶级域名

  

  最近在做主机管理系统,当用户给某个主机更改主机头时,要判断绑定的主机头是否已经备案,查询是否备案的服务已经有了,传入的参数是一个域名的顶级域名。想在网上找个正则,没有发现合适的,就自已写了一个返回顶级域名的方法,做个备忘,以后如果其它语言用到此功能,直接按方法的逻辑改就行,方法如下:

  

/// <summary>

    /// 获取域名的顶级域名

    /// </summary>

    /// <param name="domain"></param>

    /// <returns></returns>

    public static string GetTopDomainName(string domain)

    {

       //https://www.safsd.asdfasdf.baidu.com.cn/ssssd/s/b/d/hhh.html?domain=sfsdf.com.cn&id=1

        domain = domain.Trim().ToLower();

        string rootDomain = ".com.cn|.gov.cn|.cn|.com|.net|.org|.so|.co|.mobi|.tel|.biz|.info|.name|.me|.cc|.tv|.asiz|.hk";

        if (domain.StartsWith("http://")) domain=domain.Replace("http://", "");

        if (domain.StartsWith("https://")) domain = domain.Replace("https://", "");

        if (domain.StartsWith("www.")) domain = domain.Replace("www.", "");

        //safsd.asdfasdf.baidu.com.cn/ssssd/s/b/d/hhh.html?domain=sfsdf.com.cn&id=1

        if (domain.IndexOf("/") > 0)

            domain = domain.Substring(0, domain.IndexOf("/"));

        //safsd.asdfasdf.baidu.com.cn

        foreach (string item in rootDomain.Split('|'))

        {

            if (domain.EndsWith(item))

            {

                domain = domain.Replace(item, "");

                if (domain.LastIndexOf(".") > 0)//adfasd.asdfas.cn

                {

                    domain = domain.Replace(domain.Substring(0, domain.LastIndexOf(".")+1), "");

                }

                return domain +item ;

            }

            continue;

        }

        return "";

    }

 

 

你可能感兴趣的:(.net)