如何将字符串数组转换为int数组进行计算?

时间:2014-02-09 13:59:08

标签: c# arrays string int

我想在/后读取整数。这就是为什么我试图使用这段代码:

while ((line = file.ReadLine()) != null)
{
    string[] ip = line.Split('/');
    Console.WriteLine(ip[1]);                    
}

此代码将此整数作为字符串返回给我。我想用这个数字进行一些数学计算,例如,乘法。我试过这段代码,但它不起作用

int[] intArray = Array.ConvertAll(ip, int.Parse);

3 个答案:

答案 0 :(得分:2)

如果它真的与IP地址相关,这可能会有所帮助

class IPV4Adress
{
      public int BlockA {get; set;}
      public int BlockB {get; set;}
      public int BlockC {get; set;}
      public int BlockD {get; set;}

      public IPV4Adress(string input)
      {
           If(String.IsNullOrEmpty(input))
                throw new ArgumentException(input);

           int[] parts = input.Split(new char{',', '.'}).Select(Int32.Pase).ToArray();
           BlockA = parts[0];
           BlockB = parts[1];
           BlockC = parts[2];
           BlockD = parts[3];
      }

      public override ToString()
      {
           return String.Format("{0}.{1}.{2}.{3}",BlockA, BlockB, BlockC, BlockD);
      }        
}

然后从File:

中读取它
IPV4Adress[] adresses = File.ReadLines(fileName).SelectMany(line=>line.Split('/')).Select(part => new IPV4Adress(part)).ToArray();

答案 1 :(得分:1)

您正在尝试将<{> ip数组的每个项转换为整数。至少它的第二项 - "24 25 26 27"不能转换为单个整数值。你应该把这个ip数组项,用空格分割,然后将每个部分解析为整数:

int[] intArray = ip[1].Split().Select(Int32.Parse).ToArray();

或者

int[] intArray = Array.ConvertAll(ip[1].Split(), Int32.Parse);

答案 2 :(得分:0)

给定数组,您可以使用Array.ConvertAll method

int[] myInts = Array.ConvertAll(arr, s => int.Parse(s));

<强>(或)

int[] myInts = arr.Select(s => int.Parse(s)).ToArray();

<强>(OR)

var converted = arr.Select(int.Parse)

LINQ解决方案类似,除非您需要额外的ToArray调用来获取数组:

int[] myInts = arr.Select(int.Parse).ToArray();

Sourec