我是否可以使用静态方法来解析字符串以检查它是否是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地址。
答案 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]?)$")