【问题标题】:Why can't i convert from string to integer here?为什么我不能在这里从字符串转换为整数?
【发布时间】:2022-11-13 07:59:26
【问题描述】:

代码是:

public static bool IsValidIp(string ipAddres)
{
  string[] sNumbers = ipAddres.Split('.');
  int[] iNumbers = new int[sNumbers.Length];

  for(int i = 0; sNumbers.Length > i; i++){
    iNumbers[i] = Convert.ToInt32(sNumbers[i]);
  }

  return 255 >= iNumbers.Max();
}

错误:

System.FormatException : Input string was not in a correct format.

我尝试了几个输入,例如:“0.0.0.0”、“12.255.56.1”、“137.255.156.100”。 它不断返回相同的错误消息。

【问题讨论】:

标签: c# string type-conversion integer


【解决方案1】:

而不是Convert.ToInt32,Int32.TryParse 可能是一个更好的解决方案,因为它会在进行转换之前检查输入是否有效。

if (int.TryParse(sNumbers[i], out int result))
{
   iNumbers[i] = result;
}
else 
{
   return false;
}

但是,我认为您正在尝试验证指定的参数是否是有效的 IP 地址。使用IPAddress.TryParse 方法会是更好的做法。

using System.Net;
// ...

public static bool IsValidIp(string address)
{
   return IPAddress.TryParse(address, out var _);
}

out var _ 丢弃未使用的值。

【讨论】:

    猜你喜欢
    • 2021-05-09
    • 2022-11-19
    • 2022-01-21
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    相关资源
    最近更新 更多