如何在c#中将IPV6转换为缩写形式
本文关键字:缩写 转换 IPV6 中将 | 更新日期: 2023-09-27 18:01:28
缩写规则:如果一个完整的部分为零,那么它可以写成0,如果两个或多个连续的部分为零,它们可以被忽略,例如1234 0000 0000 000 1212它可以写成1234:: 1212
显然这就是你要找的:
using System.Text.RegularExpressions;
static void Main(string[] args)
{
Console.WriteLine(Compress("1234:0000:0000:0000:1212"));
Console.ReadLine();
}
private static string Compress(string ip)
{
var removedExtraZeros = ip.Replace("0000","*");
//2001:0008:*:CD30:*:*:*:0101
var blocks = ip.Split(':');
var regex = new Regex(":0+");
removedExtraZeros = regex.Replace(removedExtraZeros, ":");
//2001:8:*:CD30:*:*:*:101
var regex2 = new Regex(":''*:''*(:''*)+:");
removedExtraZeros = regex2.Replace(removedExtraZeros, "::");
//2001:8:*:CD30::101
return removedExtraZeros.Replace("*", "0");
}
*来源:IPv6缩写(零块压缩)逻辑。我使用c#