将字符串转换为IP地址格式

问题描述 投票:5回答:5

我正在以int格式从数据库中读取IP地址,但我想显示它们IP格式,如000.000.000.000

是否可以使用String.Format方法?

例如:

string str = String.Format("{0:#,###,###.##}", ips); 
c# string.format
5个回答
13
投票

如果您使用System.Net命名空间中的IPAddress对象来解析您的地址,如下所示:

IPAddress ip = IPAddress.Parse(IPStringHere);

然后在该对象上使用“ ToString()”方法:

string outputString = ip.ToString();

您可以使用整数和句号以显示所需格式的IP地址字符串。

IPAddress解析例程将使用字符串IP地址,并且还将采用int / long int格式地址,也允许您解析这两种格式。

作为奖励,如果您使用“ TryParse”并将转换放在if块中,您还可以在返回字符串之前进行测试,以查看输入格式是否生成了正确的IP地址,方便进行输入验证。


2
投票

这些32位整数分别代表整个IP地址吗?如果是这样...

IPAddress ip = new IPAddress((long)ips);
return ip.ToString();

(我不知道为什么该构造函数要花很长时间,如果超出UInt32的范围,它将抛出异常,所以我认为UInt32更合适。)


0
投票

如果是数组:

string str = String.Format("{0:###}.{1:###}.{2:###}.{3:###}", ips[0], ips[1], ips[2], ips[3]);

0
投票

这样的东西?。Net 4.0

string str = string.Join(".", ips.Select(x => x.ToString()))

早期

string str = string.Join(".", ips.Select(x => x.ToString()).ToArray())

这就是说,将string[]与中间的.连接起来。该数组由ips组成,使用ToString()转换为字符串,然后使用ToArray()

转换为字符串[]

0
投票

我来找同样的答案..但是看到那里没有我写我自己的东西。

private string padIP(string ip)
{
    string output = string.Empty;
    string[] parts = ip.Split('.');
    for (int i = 0; i < parts.Length; i++)
    {
        output += parts[i].PadLeft(3, '0');
        if (i != parts.Length - 1)
            output += ".";
    }
    return output;
}

编辑:啊,我看到的是int格式..没关系,不确定您会怎么做。...

© www.soinside.com 2019 - 2024. All rights reserved.