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

C# 使用静态方法从字符串解析IP地址,c#,.net,parsing,ip-address,system.net,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);

是否有一种静态方法可以用来解析字符串以检查它是否是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
是一个
字符串
。我正在寻找更简单的东西,例如:

System.Net.IPAddress.TryParse(baseUri.Host, out  new System.Net.IPAddress(Encoding.ASCII.GetBytes("127.0.0.1"));
由于
TryParse()
方法需要
String
out-IPAddress
引用,因此我无法直接传递
null
或一次性对象


感谢您提供的更简单的方法来解析字符串以测试它是否是IP地址

IPAddress.TryParse需要和out参数。该参数不必初始化。
public static bool IsValidIpAddress(this string s)
{
    IPAddress dummy;
    return IPAddress.TryParse(s, out dummy);
}
对于您的代码,它可以是:

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

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

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
}
如果解析成功,那么您的对象
throwayIpaddress
将具有有效的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]?)$")
你可以使用正则表达式

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]?)$")

语言错误-鉴于ThrowayIpAddress用作OUT,因此无需对其进行初始化。这实际上应该引起一些警告。只需将其设置为“null”,而不是新的…IpAddress。它是一个OUT参数,无论如何都会被覆盖掉。我敢肯定,如果使用已初始化的变量作为out参数,您会收到警告甚至错误。语言错误-鉴于ThrowayIpAddress用作out,因此无需初始化它。这实际上应该引起一些警告。只需将其设置为“null”,而不是新的…IpAddress。它是一个OUT参数,无论如何都会被覆盖掉。不过,我很肯定,如果使用已初始化的变量作为out参数,您会收到警告甚至错误。