| 网站首页 | VB.Net实例分析 | .Net技术文摘 | 下载中心 | VB.Net书籍笔记 | .Net源码 | VBS脚本与组件调用 | Windows2008技术文摘 | 给我们留言 | 
最新公告:

  没有公告

您现在的位置: 乐博网 >> VB.Net应用技巧 >> 技术文摘正文
最新推荐 更多内容
[图文]VB.Net获取顶级域名的方法[乐博网原创]
VB.Net获取顶级域名的方法[乐博网原创]
作者:hkkk ,颠倒黑白    来源:乐博网原创     更新时间:2011-3-3

文章为本站乐博网( Lob.cn )成员hkkk和颠倒黑白原创,可以自由转载和传播,转载请保留本站的作者和信息来源,谢谢!如果大家对.Net编程开发或者关于“VB.Net获取顶级域名的方法”的话题感兴趣,就一起www.SmallBasic.cn(乐博网旗下技术社区) 或者加入.Net超级QQ群 40797788  一起讨论,把他做得更完善吧!

感谢群成员hkkk让代码书写更规范,用他的话说是让代码更 ".net”  ^_^  

hkkk的代码书写得规范,而且设计力求严密有逻辑,多次自己调试发现不足并修正,这种编程严谨的态度值得我们学习。 

效果:

FilterDomainName(" www.123.lob.cn") 就是得到 lob.cn  这个对应的顶级域名
 
FilterDomainName(" abc.123.lob.cn") 就是得到 lob.cn    这个对应的顶级域名
 
FilterDomainName(" www.SmallBasic.cn") 就是得到 smallbasic.cn   这个对应的顶级域名
 
2010-12-21更新了以下代码(测试了几千个域名,靠谱 ^_^):
 
Public Function FilterDomainName(ByVal Str_DomainName As String) As String
        Dim x As Integer = 0
        Dim Str_Extensions As String = ""
        Dim Arr_Ext As String()
        Str_Extensions = ".com.cn|.net.cn|.org.cn|.gov.cn|.lob.cn|.sd.cn|.com.hk|.com|.net|.org|.cn|.hk|.cc|.info|.biz|.me|.us"
        Arr_Ext = Str_Extensions.Split("|")
        Str_DomainName = Str_DomainName.ToLower
        For x = 0 To Arr_Ext.Length - 1
            If Microsoft.VisualBasic.Right(Str_DomainName, Arr_Ext(x).Length) = Arr_Ext(x) And Str_DomainName.Length > Arr_Ext(x).Length Then
                Dim v As Integer = InStrRev(Str_DomainName, ".", Str_DomainName.Length - Arr_Ext(x).Length)
                If v = 0 Then  '更多.net源代码和教材  来自lob.cn 乐博网
                    FilterDomainName = Str_DomainName
                Else
                    FilterDomainName = Microsoft.VisualBasic.Right(Str_DomainName, Str_DomainName.Length - v)
                End If
                Return FilterDomainName
            End If
        Next
        Return ""
    End Function
 
以下是之前的一些版本,虽然不够完善,却是.net爱好者群(QQ群号:40797788)里热心的朋友调试和修改才有了上面可用的版本,感谢他们的热心付出 !

以下就是群成员hkkk提供的代码:

  Public Function FilterDomainName(ByVal Str_DomainName As String) As String
    Dim x As Integer = 0
    Dim Str_Extensions As String = ""
    Dim Arr_Ext As String()

Str_DomainName = Str_DomainName.ToLower

    Str_Extensions = "com.cn|net.cn|org.cn|gov.cn|com.hk|com|net|org|cn|hk|cc|info|biz|me|us" ' 越多级的域名请写越前面,1级域名写在最后面
    Arr_Ext = Str_Extensions.Split("|")

    For x = 0 To Arr_Ext.Length - 1
      If InStr(Str_DomainName, "." & Arr_Ext(x)) = Str_DomainName.Length - ("." & Arr_Ext(x)).Length + 1 AndAlso _
         InStr(Str_DomainName, "." & Arr_Ext(x)) <> 0 Then
        Dim Str_MyExt As String = ""
        Dim Arr_MyName As String() ''更多.net源代码和教程,来自乐博网lob.cn

        Dim chrMyExt As Char()

        Str_MyExt = Arr_Ext(x)
        Str_MyExt = "." & Str_MyExt
        chrMyExt = Str_MyExt
        Arr_MyName = Split(Str_DomainName.TrimEnd(chrMyExt), ".")
        FilterDomainName = Arr_MyName(Arr_MyName.Length - 1) & Str_MyExt

        Return FilterDomainName
      End If
    Next

    Return ""
  End Function

 

======================================

附上早前不够".net"的代码:(对比可以发现hkkk改良了很多)

此代码为hkkk书写风格下改进的版本:

   Function FilterDomainName(ByVal Str_DomainName As String)

        Dim x As Integer
        Dim Str_Extensions As String
        Dim Arr_Ext As Array
        Str_Extensions = "com.cn|net.cn|org.cn|gov.cn|com.hk|com|net|org|cn|hk|cc|info|biz|me|us" '  越多级的域名请写越前面,1级域名写在最后面

        Arr_Ext = Str_Extensions.Split("|")
        For x = 0 To UBound(Arr_Ext) 
            If Arr_Ext(x) = Microsoft.VisualBasic.Right(Str_DomainName.ToLower, Arr_Ext(x).Length) Then
                Dim Str_MyExt As String
                Dim Arr_MyName As Array '更多.net源代码和教程,来自乐博网lob.cn
                Str_MyExt = Arr_Ext(x)
                Arr_MyName = Split(Microsoft.VisualBasic.Left(Str_DomainName, Str_DomainName.Length - Str_MyExt.Length - 1), ".")
                FilterDomainName = Arr_MyName(Arr_MyName.Length - 1) & "." & Str_MyExt
                Exit Function
            End If
        Next
        FilterDomainName = "" '如果为空则代表输入的参数Str_DomainName并不是一个域名,确切说应该是这个域名不带我们规定的后缀名

    End Function   

群成员 Rodger 的方法如下,乐博网还没时间测试,但也先贴出来让大家参考:

abc.sina.com.cn获取sina.com.cn
asf.2342.163.com获取 163.com
 Dim a As String ="abc.sina.com.cn".ToUpper
        Dim b As String = Nothing
        a.IndexOf(".COM")
        a.IndexOf(".COM.CN")
        If a.LastIndexOf(".COM") >= 0 Then
            b = a.Substring(a.LastIndexOf(".COM"))
            a = a.Substring(0, a.LastIndexOf(".COM"))
            a = a.Substring(a.LastIndexOf(".") + 1) + b
            MsgBox(a)
        ElseIf a.LastIndexOf("COM.CN") >= 0 Then
            b = a.Substring(a.LastIndexOf(".COM.CN"))
            a = a.Substring(0, a.LastIndexOf(".COM.CN"))
            a = a.Substring(a.LastIndexOf(".") + 1) + b
            MsgBox(a)
        End If

  • 上一篇:

  • 下一篇:
  • 【字体: 】【打印此文】【关闭窗口
      相关文章:(只显示最新16条)
    没有相关技术文摘

    | 设为首页 | 加入收藏 | 联系站长 | | 友情链接 | 版权申明 |
    乐博网欢迎各种媒体转载我们的原创作品[转载请注明出处];我们鼓励更多VB.Net开发者一起加入研究与探讨;如发现文章访问错误、内容错误或版权疑问、内容有违相关法律(如涉及政治、色情、反动或散布虚假有害信息)等情况,请及时向我们举报,我们将及时纠正!
    联系邮箱:Shiny#vip.qq.com (#替换为@) QQ交流群: 40797788 [闽ICP备05014267号]