2014-11-25 99 views
0

作爲較大程序的一部分,我需要將用逗號分隔的值的字符串列表轉換爲必須以特定方式排列信息的Int列表。換句話說,我有這個字符串listA的:以逗號分隔的值列表爲int列表

**ListA(string)** 

[0] "4, 0, 7, -1," 

[1] "0, 1, 7, -1," 

[2] "7, 1, 6, -1," 

那我想轉換到這個INT數組listB:

**List B(int)** 

[0] {int[4]}  

     [0] 4 
     [1] 0 
     [2] 7 
     [3] -1 

[1] {int[4]} 

     [0] 0 
     [1] 1 
     [2] 7 
     [3] -1 
[2] {int[4]} 


     [0] 7 
     [1] 1 
     [2] 6 
     [3] -1 

我一直在試圖找出如何做到這一點,但我沒做對了。

如果你能給我的手,我將不勝感激!

非常感謝!

+0

因此,將其分成不同的部分 - 例如,用逗號分割字符串,並將每個子字符串轉換爲int。你有多遠? – 2014-11-25 14:01:55

回答

0

使用LINQ更succint但這是另一種方式,你可以完成同樣的事情剛分離出來了。

var stringList = new List<string>() { "4, 0, 7, -1,", "0, 1, 7, -1,", "7, 1, 6, -1," }; 
     var intList = new List<int[]>(); 

     foreach(var str in stringList) 
     { 
      // Call Trim(',') to remove the trailing commas in your strings 
      // Use Split(',') to split string into an array 
      var splitStringArray = str.Trim(',').Split(','); 

      // Use Parse() to convert the strings as integers and put them into a new int array 
      var intArray = new int[] 
      { 
       int.Parse(splitStringArray[0]) 
       ,int.Parse(splitStringArray[1]) 
       ,int.Parse(splitStringArray[2]) 
       ,int.Parse(splitStringArray[3]) 
      }; 

      intList.Add(intArray); 
     } 
0

它可以與LINQ

var a = new List<string> {"1, 2, 3, 4", "5, 6, 7, 8"}; 

List<int[]> b = a.Select(s => s.Split(new [] {", "}, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray()).ToList(); 
+0

感謝您的回答! 只有一件事,我怎麼能擺脫逗號? – user3641829 2014-11-25 14:04:31

+0

@ user3641829不客氣! – 2014-11-25 14:04:59

1

嘗試很容易做到:

var listB = new List<string>() { "4, 0, 7, -1,", "0, 1, 7, -1,", "7, 1, 6, -1," } 
    .Select(
     x => x.TrimEnd(',') //removing last "," 
       .Split(',') //splitting string into array by "," 
       .Select(int.Parse) //parsing string to int 
       .ToList() 
    ).ToList();