2013-10-17 100 views
0

不知道該怎麼標題這個問題,所以請隨時編輯。劃分字符串列表

我有一個字符串列表,其中所有元素都是長度爲40的字符串。 我想要做的是將列表元素分割爲字符20,並將現在劃分的字符串的最後部分推送到下一個元素列表中,追加列表中的所有其他元素。

E.g.

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 

這怎麼能實現?

+0

難道他們全部以'00'開始?如果是這樣,你可以從每個字符串中取代它。如果不是,他們都保證是正好4個字符長? – Bridge

+0

分裂的模式是什麼? –

+0

@downvoter,小心解釋一下?我真的很想學習如何改進我的問題,但這並沒有給我帶來什麼...... – chwi

回答

11
list = list.SelectMany(s => new [] { s.Substring(0, 20), s.Substring(20, 20) }) 
      .ToList(); 
1

不知道爲什麼你要做到這一點,但它是非常簡單的LINQ:

List<string> split = list.SelectMany(s => new []{s.Substring(0, 2), s.Substring(2)}).ToList(); 
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); 
     } 
+0

不確定你的意思是「使用現有的數組」,因爲所有其他答案都將它作爲輸入使用,並分配額外的數組。 – codekaizen

+0

我的輸入數組也是我的輸出數組。 – Moho

4
list = list.SelectMany(x=>new[]{x.Substring(0, 20), x.Substring(20)}).ToList();