使用静态方法从字符串解析IP地址
本文关键字:IP 地址 字符串 静态方法 | 更新日期: 2023-09-27 17:49:28
是否有一个静态方法,我可以使用解析字符串来检查它是否是一个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地址。
public static bool IsValidIpAddress(this string s)
{
IPAddress dummy;
return IPAddress.TryParse(s, out dummy);
}
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地址,您可以在代码中进一步使用它,或者如果您想要忽略它。
你可以使用regex
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]?)$")