zoukankan      html  css  js  c++  java
  • IP段转换为 list

    public static List<String> StringToIPList(string strIPs)
            {
                var reg1 = new Regex(@"(((2[0-4]d)|(25[0-5])|([0-1]?d{1,2})).?){4}(-(((2[0-4]d)|(25[0-5])|([0-1]?d{1,2})).?){4})");
                var reg2 = new Regex(@"^(((2[0-4]d)|(25[0-5])|([0-1]?d{1,2})).?){4}$");
                if (string.IsNullOrEmpty(strIPs))
                {
                    return new List<string>();
                }
                var ips = strIPs.Split(',');
                var ipList = new List<string>();
                var tempList = new List<string>();
                object a = null;
                foreach (var item in ips)
                {
                    if (reg1.IsMatch(item))
                    {
                        tempList.Add(item);
                    }
                    if (reg2.IsMatch(item))
                    {
                        a = reg2.Matches(item);
                        ipList.Add(item);
                    }
                }
                var ipListList = new List<String>();
                foreach (var item in tempList)
                {
                    var tempIps = item.Split('-');
                    var tempResult = true;
                    foreach (var regItem in tempIps)
                    {
                        tempResult &= reg2.IsMatch(regItem);
                    }
                    if (!tempResult) continue;
                    var list = new List<List<int>>();
                    foreach (var loopItem in tempIps)
                    {
                        var nums = loopItem.Split('.');
                        if (nums.Length != 4) continue;
                        var listPart = new List<int>();
                        foreach (var num in nums)
                        {
                            listPart.Add(int.Parse(num));
                        }
                        list.Add(listPart);
                    }
                    if (list.Count > 2) continue;
                    var listRealPartIps = new List<String>();
                    for (int i = 0; i < 4; i++)
                    {
                        var tempPartList = new List<String>();
                        if (list[0][i] > list[1][i]) continue;
                        if (list[0][i] == list[1][i])
                        {
                            if (i == 0)
                            {
                                tempPartList.Add(list[0][i].ToString());
                            }
                            else
                            {
                                foreach (var leftNums in listRealPartIps)
                                {
                                    tempPartList.Add(leftNums + "." + (list[0][i]).ToString());
                                }
                            }
                        }
                        else
                        {
                            var ipCount = list[1][i] - list[0][i] + 1;
                            for (int k = 0; k < ipCount; k++)
                            {
                                if (i == 0)
                                {
                                    tempPartList.Add((list[0][i] + k).ToString());
                                }
                                else
                                {
                                    foreach (var leftNums in listRealPartIps)
                                    {
                                        tempPartList.Add(leftNums + "." + (list[0][i] + k).ToString());
                                    }
                                }
                            }
                        }
                        listRealPartIps = tempPartList;
                    }
                    ipList.AddRange(listRealPartIps);
                }
                return ipList;
            }
    

      

  • 相关阅读:
    Javascript异步编程之回调函数
    重绘(redraw或repaint)和 重排(reflow)
    前端性能优化之重排和重绘
    关于options请求的一点理解
    跨域中option请求详解
    手写call、apply、bind函数
    CSS3疑难问题---7、实现元素水平垂直居中
    CSS3疑难问题---8、纯css实现三角形
    【转】Activity启动模式 及 Intent Flags 与 栈 的关联分析
    ListView为什么用setOnItemClick这个方法和onTouch这个方法有冲突
  • 原文地址:https://www.cnblogs.com/caolingyi/p/8548151.html
Copyright © 2011-2022 走看看