如何在使用逻辑遍历数组时获得单个响应

  • 本文关键字:数组 响应 单个 遍历 c#
  • 更新时间 :
  • 英文 :


测试面试问题:

我有一个if语句来检查IP地址的所有条件是否满足,如果是,我希望它写IP地址是否有效。我应该自己使用循环逻辑,而不是使用其他类库,如ipaddress。parse

public static void Main(string[] args)
{
string ipAddress = "10.121.300.21";
string[] sections = ipAddress.Split('.');
string invalid = "The IP address: {0} is invalid!";
string valid = "The IP address: {0} is valid";
for (var i = 0; i < sections.Length; i++)
{
double ipNum = int.Parse(sections[i]);
if (ipNum > 0 && ipNum < 255 && sections.Length == 4)
{
Console.WriteLine(valid, ipAddress);
}
else
{
Console.WriteLine(invalid, ipAddress);
Console.WriteLine("section number {0} is invalid. ", sections[i]);
}
}
}

现在它返回:

The IP address: 10.121.300.21 is valid
The IP address: 10.121.300.21 is valid
The IP address: 10.121.300.21 is invalid!
section number 300 is invalid. 
The IP address: 10.121.300.21 is valid```

我想让它在一行中返回它是否有效而不是逐个遍历数组中的每一项

您可以使用IPAddress.TryParse进行一次检查

判断字符串是否为有效的IP地址。

可以同时使用IPv4和IPv6。然而,你需要阅读备注,看看它是否真的适合你的需要

评论

注意这个方法接受的ipString值是有效的解析为Int64,然后将该Int64视为an的长值IP地址按网络字节顺序排列,类似于IPAddress构造函数。这意味着该方法返回true如果Int64被成功解析,即使它表示一个地址这不是一个有效的IP地址。例如,如果ipString为"1&quot方法返回true,即使"1"(或0.0.0.1)不是一个有效的IP地址,您可能期望此方法返回false。解决这个Bug会破坏现有的应用程序,所以当前的行为不会改变了。您的代码可以避免这种行为,通过确保它只使用此方法解析点分十进制格式的IP地址。

var ipAddress = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";
Console.WriteLine($"{ipAddress}: {(IPAddress.TryParse(ipAddress, out _) ? "Valid" : "invalid")}");

2001:0db8:85a3:0000:0000:8a2e:0370:7334: Valid

相关内容

  • 没有找到相关文章

最新更新