0

是否有一种静态方法可以用来解析字符串以检查它是否是 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);

baseUri是一个Uri变量,并且Host是一个string。我正在寻找更简单的东西,例如:

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

由于该TryParse()方法需要一个String和一个out IPAddress引用,因此我不能null直接传递或丢弃对象。

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

4

3 回答 3

4
public static bool IsValidIpAddress(this string s)
{
    IPAddress dummy;
    return IPAddress.TryParse(s, out dummy);
}
于 2012-12-26T08:36:27.693 回答
1

IPAddress.TryParse 需要和 out 参数。该参数不必初始化。对于您的代码,它可以是:

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 地址,您可以在代码中进一步使用它,或者如果您愿意,可以忽略它。

于 2012-12-26T08:43:19.193 回答
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]?)$")
于 2012-12-26T08:47:07.393 回答