0

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

我有一个字符串列表,其中所有元素都是长度为 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

如何做到这一点?

4

4 回答 4

11
list = list.SelectMany(s => new [] { s.Substring(0, 20), s.Substring(20, 20) })
           .ToList();
于 2013-10-17T08:58:01.320 回答
4
list = list.SelectMany(x=>new[]{x.Substring(0, 20), x.Substring(20)}).ToList();
于 2013-10-17T09:11:42.310 回答
1

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

List<string> split = list.SelectMany(s => new []{s.Substring(0, 2), s.Substring(2)}).ToList();
于 2013-10-17T09:02:37.873 回答
0

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

        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 );
        }
于 2013-10-17T09:07:09.487 回答