.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 "";
    }

 

 

posted @ 2012-08-02 16:16  奋斗中...  阅读(1745)  评论(0编辑  收藏  举报