代码之家  ›  专栏  ›  技术社区  ›  eugeneK

如何使用VB.NET从完整url中提取网站主机名?

  •  1
  • eugeneK  · 技术社区  · 14 年前

    http://main.something.biz/sup.aspx?r=e3432r3 我只想得到“某物”。

    不管是Regex还是别的什么东西。

    4 回复  |  直到 14 年前
        1
  •  2
  •   Mazhar Karimi Mazhar Karimi    14 年前

    注意:这只是为您的规范:您可以通过在我的代码末尾添加更多条件来扩展它。但我要说的是,当path像“abc.ss33.video.somthing.co.us”时,它就不起作用了

     Uri u = new Uri("http://main.something.biz/sup.aspx?r=e3432r3");
                string a = u.DnsSafeHost;
                string[] arr1 = a.Split('.');
                string somethinVar = String.Empty;
    
                if (arr1.Length == 3)
                    somethinVar = arr1[1];
    
        2
  •  0
  •   Massimiliano Peluso    14 年前

    在您描述的意义上,没有内置的方法可以做到这一点,因为无论是IIS还是ASP.NET都不知道主机名和域名之间的区别。

    你必须写一些代码才能做到这一点。

    string hostName=ReffererUrl.split('.')[1];
    

    只有当ReffererUrl看起来像您发布的那个,并且您必须确保split函数返回一个元素数大于1的数组时,此代码才起作用

        3
  •  0
  •   Ramiz Uddin    14 年前
    HttpContext.Current.Request.ServerVariables("HTTP_HOST")
    
        4
  •  0
  •   Andrew-UK    6 年前

    使用子域(如果存在)提取域:-

    Public Function ExtractSubAndMainDomainFromURL(URL As String) As String
        '
        ' cut-off any url encoded data
        URL = URL.Split("?"c)(0)
        'return array of segments between slashes
        Dim URLparts() As String = URL.Split("/"c)
        'find first segment with periods/full-stops
        Dim Domain As String = Array.Find(URLparts, Function(x) (x.Contains(".")))
        'check if nothing returned - if necessary
        If IsNothing(Domain) Then Domain = String.Empty 
    
    
        Return Domain
    
    End Function