前端之家收集整理的这篇文章主要介绍了
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
}
原文链接:https://www.f2er.com/regex/361626.html