【问题标题】:How we can convert IPV6 into abbreviate form in c#?我们如何在 c# 中将 IPV6 转换为缩写形式?
【发布时间】:2015-07-12 17:23:53
【问题描述】:

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

【问题讨论】:

  • agree-gate?我不明白为什么你在标题中拼写得很好,为什么会这样拼写。
  • 现在可以了吗?顺便说一句,拼写无关紧要。
  • 这是一个字符串值吗?听起来像一个简单的条件和替换给我......
  • 是的,它是字符串类型。你能得到这么长的 int 类型吗?

标签: c#


【解决方案1】:

显然这就是你要找的东西:

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 Abbreviation(zero blocks compression) logic. I'm using c#

【讨论】:

  • 缺少使用命名空间?我应该使用哪些命名空间?
  • 您唯一需要的是System.Text.RegularExpressions。更新了答案。
  • 它不工作 错误 1 ​​当前上下文中不存在名称 'ip'
  • 再次检查我的答案。用主代码更新,这就是你调用Compress函数的方式。
  • 在这种情况下,请随意接受是正确的答案。
猜你喜欢
  • 2015-09-22
  • 2010-10-29
  • 1970-01-01
  • 2020-11-06
  • 2011-04-15
  • 2011-10-20
  • 1970-01-01
  • 2017-02-13
  • 2013-07-26
相关资源
最近更新 更多