• Live2D 看板娘 / Demo


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace CSharpStudy
    {
        class Program
        {
            static void Main(string[] args)
            {
                string url = "http://www.xinhuanet.com/2018-08/02/c_1123215278.htm";
                //string url = "http://news.ifeng.com/a/20180803/59600750_0.shtml";
    
                Uri uri = new Uri(url);
                string topDomain = GetBaseDomain(uri.Host);
                Console.WriteLine("当前域名:" + uri.Host);
                Console.WriteLine("一级域名:" + topDomain);
                Console.ReadKey();
            }
            private static string GetBaseDomain(string host)
            {
                HashSet<string> HashSet = new HashSet<string>(".com|.co|.info|.net|.org|.me|.mobi|.us|.biz|.xxx|.ca|.co.jp|.com.cn|.net.cn|.org.cn|.mx|.tv|.ws|.ag|.com.ag|.net.ag|.org.ag|.am|.asia|.at|.be|.com.br|.net.br|.bz|.com.bz|.net.bz|.cc|.com.co|.net.co|.nom.co|.de|.es|.com.es|.nom.es|.org.es|.eu|.fm|.fr|.gs|.in|.co.in|.firm.in|.gen.in|.ind.in|.net.in|.org.in|.it|.jobs|.jp|.ms|.com.mx|.nl|.nu|.co.nz|.net.nz|.org.nz|.se|.tc|.tk|.tw|.com.tw|.idv.tw|.org.tw|.hk|.co.uk|.me.uk|.org.uk|.vg".Split('|'));
                string[] hs = host.Split(".".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
    
                if (hs.Length > 2)
                {
                    //传入的host地址至少有三段
                    int p2 = host.LastIndexOf('.');                 //最后一次“.”出现的位置
                    int p1 = host.Substring(0, p2).LastIndexOf('.');//倒数第二个“.”出现的位置
                    string s1 = host.Substring(p1);
                    if (!HashSet.Contains(s1))
                        return s1.TrimStart('.');
    
                    //域名后缀为两段(有用“.”分隔)
                    if (hs.Length > 3)
                        return host.Substring(host.Substring(0, p1).LastIndexOf('.'));
                    else
                        return host.TrimStart('.');
                }
                else if (hs.Length == 2)
                {
                    return host.TrimStart('.');
                }
                else
                {
                    return string.Empty;
                }
            }
        }
    }

    后续会陆续更新其他资料,喜欢请关注哦!

    我的博客:https://www.cnblogs.com/duhaoran

  • 相关阅读:
    C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿!
    Java8的新特性以及与C#的比较
    点旋转坐标变换
    vc++返回模块路径
    为什么不要 "lock(this)" ? lock object 并是readonly(转载)
    《黄帝内经》要义
    C++多线程编程简单实例
    c++ 获取文件大小
    c# 获取文件夹大小
    自动驾驶仿真工具的下载与安装
  • 原文地址:https://www.cnblogs.com/duhaoran/p/14272666.html
Copyright © 2020-2023  润新知