首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从URl获取域名

问从URl获取域名
EN

Stack Overflow用户
提问于 2014-10-18 03:52:04
回答 4查看 739关注 0票数 3

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

例如,

到目前为止,这就是我所尝试过的,它没有返回我所期望的确切结果,有人能在这里帮助我吗?

代码语言:javascript
复制
   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;
    }
EN

回答 4

Stack Overflow用户

发布于 2014-10-18 03:59:01

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

代码语言:javascript
复制
Uri myUri = new Uri("http://www.something.com/");

它有一些属性,比如主机,应该可以得到你想要的.

票数 3
EN

Stack Overflow用户

发布于 2014-10-18 06:28:12

请尝试以下代码:

代码语言:javascript
复制
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;会对你有用的。

请用您的建议输入来测试它。

票数 1
EN

Stack Overflow用户

发布于 2014-10-18 05:24:49

下面是使用乌里类提取部件的代码,然后将您想要的部分放在一起。

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

代码语言:javascript
复制
Uri MyUri = new Uri(domainURL);

string Result = MyUri.GetLeftPart(UriPartial.Scheme);

Result += MyUri.GetComponents(UriComponents.Host, UriFormat.SafeUnescaped).Replace("www.", string.Empty);

return Result;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26436131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档