2014-02-09 20 views
1

我想讀取/之後的整數。這就是爲什麼我試圖使用此代碼:如何將字符串數組轉換爲int數組進行計算?

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

此代碼返回我這個整數作爲字符串。我想用這個數字進行一些數學計算,例如乘法。我想這個代碼,但它不工作

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

** **如何不起作用?它爆炸了嗎? – SLaks

+1

您的輸入是什麼? –

+0

我認爲'ip'數組中的項目之一不能被解析爲整數 –

回答

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); 
+0

即時通訊對不起,我的錯誤輸出只是24 25 26 27 –

+0

@MehmetYüce通過輸出你的意思是'ip [1]'項目的值?讓我問清楚 - 你用'/'分隔線。這給了你'ip'數組,其第二項的值有點像'24 25 26 27',並且你想把這第二項轉換爲整數數組? –

+0

是的,它們是ip [1]的值 –

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

+2

它與OP代碼有什麼不同? –

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); 
     }   
} 

然後從文件中讀取數據:

IPV4Adress[] adresses = File.ReadLines(fileName).SelectMany(line=>line.Split('/')).Select(part => new IPV4Adress(part)).ToArray(); 
+0

我很無聊並且想到,爲什麼不提供fullblown soloution。 – CSharpie

+1

ups,我沒有看到意見對不起,我認爲這是如何與IP地址相關,但顯然它是:) –

相關問題