2014-11-25 58 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();