文章为本站乐博网( 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 这个对应的顶级域名
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 |