前端之家收集整理的这篇文章主要介绍了
IP地址排序问题,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
- class Program {
- #region IP地址排序问题
- string strIP = File.ReadAllText("ip地址.txt");
- //// strIP = "192.168.1.123 192.168.1.3 2.1.1.12 3.1.1.1";
- //////空格 不一致,使用正则分割
- ////string[] ipAddress = Regex.Split(strIP," +");
-
- #region 假设ip地址很乱,制表符不一致,通过正则提取
- MatchCollection matchColl = Regex.Matches(strIP,@"(\d{1,3}.){3}\d{1,3}");
- StringBuilder sb = new StringBuilder(50);
- foreach (Match item in matchColl)
- {
- sb.AppendLine(item.Value);
- }
- strIP = sb.ToString();
- #endregion
-
- string[] ipAddress = strIP.Split('\n');
-
- // 这样每一组的比较依据都是首个数字。与实际中ip地址分类顺序不一致了。
- Console.WriteLine("\n\n排序前:");
- Array.Sort(ipAddress);
- Console.WriteLine(string.Join("\n",ipAddress));
-
- #region 补0排序过程
- //补0的个数不一致,干脆都补0,保证每一组至少凑满三位
- strIP = Regex.Replace(strIP,"(\\d+)","00$1");
- //Console.WriteLine(strIP);
-
- //除去多余的0
- strIP = Regex.Replace(strIP,"0*(\\d{3})","$1");
- //Console.WriteLine(strIP);
- ipAddress = strIP.Split('\n'); // 补0完整后,再分割到数组
-
- Console.WriteLine("\n\n排序后:");
- Array.Sort(ipAddress);
- Console.WriteLine(string.Join("\n",ipAddress));
- #endregion
- #endregion
- }