【问题标题】:Dividing a list of strings划分字符串列表
【发布时间】:2013-10-17 08:54:56
【问题描述】:

不太清楚这个问题的标题,所以请随时编辑。

我有一个字符串列表,其中所有元素都是长度为 40 的字符串。 我想要做的是在字符 20 处拆分列表元素,并将现在拆分的字符串的最后一部分推送到列表中的下一个元素,附加列表中的所有其他元素。

例如

list[0] = 0011
list[1] = 2233
list[2] = 4455
            ^split here
// new list results in:
list[0] = 00
list[1] = 11
list[3] = 22
list[4] = 33
list[5] = 44
list[6] = 55

如何做到这一点?

【问题讨论】:

  • 都是以00开头的吗?如果是这样,您可以从每个字符串中替换它。如果不是,它们是否都保证正好是 4 个字符长?
  • 分裂的模式是什么?
  • @downvoter,需要解释一下吗?我真的很想学习如何改进我的问题,但这对我没有任何帮助......
  • @Bridge 不,我编辑了我的问题。谢谢
  • @ArtyomNeustroev 你是什么意思?我想把它分成两半。

标签: c# string list


【解决方案1】:
list = list.SelectMany(s => new [] { s.Substring(0, 20), s.Substring(20, 20) })
           .ToList();

【讨论】:

    【解决方案2】:
    list = list.SelectMany(x=>new[]{x.Substring(0, 20), x.Substring(20)}).ToList();
    

    【讨论】:

      【解决方案3】:

      不知道为什么要这样做,但使用 linq 很简单:

      List<string> split = list.SelectMany(s => new []{s.Substring(0, 2), s.Substring(2)}).ToList();
      

      【讨论】:

        【解决方案4】:

        如果您必须使用现有数组:

                const int elementCount = 3;
                const int indexToSplit = 2;
        
                string[] list = new string[elementCount * 2] { "0011", "0022", "0033", null, null, null };
        
                for (int i = elementCount; i > 0; --i)
                {
                    var str = list[i-1];
                    var left = str.Substring( 0, indexToSplit );
                    var right = str.Substring( indexToSplit, str.Length - indexToSplit );
        
                    var rightIndex = i * 2 - 1;
        
                    list[rightIndex] = right;
                    list[rightIndex - 1] = left;
                }
        
                foreach( var str in list )
                {
                    Console.WriteLine( str );
                }
        

        【讨论】:

        • 不确定您所说的“使用现有数组”是什么意思,因为所有其他答案都像您一样使用它作为输入,并像您一样分配一个额外的数组。
        • 我的输入数组也是我的输出数组。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-16
        • 2012-11-06
        • 1970-01-01
        相关资源
        最近更新 更多