字符串列表,以逗号分隔值到int列表

时间:2014-11-25 13:58:42

标签: c# list

作为更大程序的一部分,我需要将带有逗号分隔值的字符串列表转换为Int列表,其中信息必须以特定方式排列。换句话说,我有这个字符串列表A:

**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

我一直试图弄清楚如何做到这一点,但我没有设法做到这一点。

如果你能帮助我,我将不胜感激!

非常感谢!

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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();

答案 2 :(得分:0)

使用LINQ更简洁,但这是另一种方法,你可以完成相同的事情,只是分开更多。

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