2013-10-17 3 views
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 

어떻게 달성 할 수 있습니까?

+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();