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

获取顶级域名
EN

Stack Overflow用户
提问于 2012-09-11 03:45:30
回答 1查看 580关注 0票数 1

我使用的是Url.RouteUrl("My_Route", new RouteValueDictionary(new { some = "value" }),"http","hostname"),现在我需要从url获取主机名,但只需要顶级域名。例如,我使用ui.foo.local运行我的站点,并且我需要将url路由到foo.local。在mvc或c#中有没有一种内置的方式来做这件事呢?

EN

回答 1

Stack Overflow用户

发布于 2012-09-11 03:49:47

我有这个问题,并写了一个小域名Url拆分类,因为我找不到任何简单的方法来做它。我没有在上面花太多时间,所以很高兴得到一些反馈。您可以这样使用它:

代码语言:javascript
复制
var splitter = new DomainSplitter("http://stackoverflow.com");
var domain = splitter.DomainPart;

类在这里:

代码语言:javascript
复制
public  class DomainSplitter {
    public string DomainPart { get; private set; }
    public string SubDomainPart { get; private set; }
    public string SchemePart { get; private set; }
    public string QueryPart { get; private set; }

    public DomainSplitter(string url) {

        if (string.IsNullOrEmpty(url)) {
            throw new Exception("urlString or expected sub domain were null or empty");
        }

        if (url.Contains("://")) {
            ShemePart = url.Split(':')[0] + "://";
            url = url.Remove(0, FirstPart.Length);
        }


        var endOfDomainIndex = url.IndexOfAny("?/".ToCharArray());
        if (endOfDomainIndex == -1) {
            endOfDomainIndex = url.Length;
        }

        int startOfDomainIndex;
        var domainStub = url.Substring(0, endOfDomainIndex);
        var noOfDots = domainStub.Length - domainStub.Replace(".", "").Length;
        switch (noOfDots) {
            case 0:
                startOfDomainIndex = 0;
                break;

            case 1:
                startOfDomainIndex = 0;
                if (url.Contains("localhost")) {
                    startOfDomainIndex = url.IndexOf(".") + 1;
                }
                break;

            default:
                startOfDomainIndex = url.IndexOf(".") + 1;
                break;
        }

        if (url.Contains("?")) {
            QueryPart = "?" + url.Split('?')[1];    
        }
        else {
            QueryPart = "";
        }

        SubDomainPart = startOfDomainIndex > 0 ? url.Substring(0, startOfDomainIndex - 1) : "";
        DomainPart = url.Substring(startOfDomainIndex, endOfDomainIndex - startOfDomainIndex);


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

https://stackoverflow.com/questions/12358420

复制
相关文章

相似问题

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