如何在c#中将IPV6转换为缩写形式

本文关键字:缩写 转换 IPV6 中将 | 更新日期: 2023-09-27 18:01:28

缩写规则:如果一个完整的部分为零,那么它可以写成0,如果两个或多个连续的部分为零,它们可以被忽略,例如1234 0000 0000 000 1212它可以写成1234:: 1212

如何在c#中将IPV6转换为缩写形式

显然这就是你要找的:

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#