【问题标题】:String list with comma separated values to int list带有逗号分隔值的字符串列表到 int 列表
【发布时间】:2014-11-25 22:38:07
【问题描述】:

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

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

我一直在想怎么做,但我没能做到。

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

非常感谢!

【问题讨论】:

  • 所以把它分成不同的部分——例如,用逗号分割字符串,并将每个子字符串转换为一个 int。你在这方面进展到什么程度了?

标签: c# list


【解决方案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();

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      使用 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();
      

      【讨论】:

      • 感谢您的回答!只有一件事,我怎么能去掉逗号?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 2015-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多