IP地址排序问题

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

猜你在找的正则表达式相关文章