当前位置 : 主页 > 编程语言 > c语言 >

vb.net – 获得域名扩展的最优雅方式是什么?

来源:互联网 收集:自由互联 发布时间:2021-06-24
例如 google.com - .comgoogle.co.id - .co.idhello.google.co.id - .co.id 在vb.net中? 甚至可以这样做吗? 通过假设具有各种“.”的域.必须包括“.co”.位,你可以使用这段代码: Dim input As String = "hello
例如

google.com -> .com

google.co.id -> .co.id

hello.google.co.id -> .co.id

在vb.net中?

甚至可以这样做吗?

通过假设具有各种“.”的域.必须包括“.co”.位,你可以使用这段代码:

Dim input As String = "hello.google.co.id"
Dim extension As String = ""
If (input.ToLower.Contains(".co.")) Then
    extension = input.Substring(input.ToLower.IndexOf(".co."), input.Length - input.ToLower.IndexOf(".co."))
Else
    extension = System.IO.Path.GetExtension(input)
End If

UPDATE

正如评论所建议的那样,上面的代码并没有考虑到很多可能性(例如.ca.us).下面的版本来自不同的假设(.xx.yy只有在有2个字符的组时才能出现)应该处理所有可能的替代方案:

If (input.ToLower.Length > 4 AndAlso input.ToLower.Substring(0, 4) = "www.") Then input = input.Substring(4, input.Length - 4) 'Removing the starting www.  

Dim temp() As String = input.Split(".")

If (temp.Count > 2) Then
    If (temp(temp.Count - 1).Length = 2 AndAlso temp(temp.Count - 2).Length = 2) Then
        'co.co or ca.ca, etc.
        extension = input.Substring(input.ToLower.LastIndexOf(".") - 3, input.Length - (input.ToLower.LastIndexOf(".") - 3))
    Else
        extension = System.IO.Path.GetExtension(input)
    End If
Else
    extension = System.IO.Path.GetExtension(input)
End If

在任何情况下,这都是一个诡辩的现实,因此这个代码(基于对情况的非常有限的理解,我目前的理解)不能被认为是100%可靠的.有些情况甚至在不知道给定字符集是否为扩展名的情况下甚至无法识别;例如:“hello.ue.co”.在某些情况下,该分析应补充有检查给定扩展是否有效的功能(例如,包括一组有效但不明显的扩展的字典),至少在某些情况下.

网友评论