使用静态方法从字符串解析IP地址

时间:2012-12-26 08:31:03

标签: c# .net parsing ip-address system.net

我是否可以使用静态方法来解析字符串以检查它是否是IP地址,而不必初始化新的System.Net.IPAddress实例?

这就是我想要实现的目标

System.Net.IPAddress throwawayIpAddress = new System.Net.IPAddress(Encoding.ASCII.GetBytes("127.0.0.1"));

System.Net.IPAddress.TryParse(baseUri.Host, out throwawayIpAddress);

baseUriUri变量,Hoststring。我正在寻找更简单的东西,例如:

System.Net.IPAddress.TryParse(baseUri.Host, out  new System.Net.IPAddress(Encoding.ASCII.GetBytes("127.0.0.1"));

由于TryParse()方法需要Stringout IPAddress引用这一事实,我无法直接传递null或一次性对象。

以更简单的方式感谢您的建议,以解析字符串以测试它是否是IP地址。

3 个答案:

答案 0 :(得分:4)

public static bool IsValidIpAddress(this string s)
{
    IPAddress dummy;
    return IPAddress.TryParse(s, out dummy);
}

答案 1 :(得分:1)

IPAddress.TryParse期望和输出参数。该参数不必初始化。 对于您的代码,它可以是:

System.Net.IPAddress throwawayIpAddress; //No need to initialize it
if(System.Net.IPAddress.TryParse(baseUri.Host, out throwawayIpAddress))
{
//valid IP address
}
{
//Invalid IP address
}

如果解析成功,那么您的对象throwawayIpAddress将拥有有效的IP地址,您可以在代码中进一步使用它,或者如果需要,可以忽略它。

答案 2 :(得分:1)

你可以使用正则表达式

var isValidIP = Regex.IsMatch(stringValue, @"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$")