繁体   English   中英

从URl获取域名

[英]Getting Domain Name from URl

我需要从任何网址中提取确切的域名。

例如,

这是我到目前为止所尝试的,这并没有返回我期待的任何人可以帮助我的确切结果

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

使用System命名空间中的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;
}

我认为你应该拆分并从字符串的开头获取协议并将其附加到域。 如果您传递没有协议的任何URL,如http://代码,则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;

主人是你要找的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM