2013-02-08 3 views
0

다양한 문자열 레코드를 다루는 목록이 있습니다. 일부 레코드는 세미콜론으로 구분되는 여러 하위 레코드로 구성됩니다. 예를 들어목록 항목에서 세미콜론을 제거하십시오.

생활 기술

없음 관련 항목

통신

채용 다음 없기 때문에; 듣기 능력; 개인 개발; 질문하는 기술; 코칭/멘토링; 승인; 신규 모집과 선발. 레코드가 및 더 중복이 없는지 확인 세미콜론을 포함하는 모든 레코드를 분리해서를 통해

고객 서비스

체육

내가 지금하고 싶은 반복하는 것입니다.

for(int i=0; i<lst.Count; i++) { 
    // seperate the records that contains ';' into individual unique items 
} 

어떻게하면됩니까?

+1

당신이 당신이 그 (것)을 분리 한 후 하위 레코드 할 하시겠습니까? – DGibbs

+0

그래, 그건 고려해야 할 매우 중요한 요소 야, 나는 내 대답을 썼다. –

답변

3
 List<String> lst = new List<string>(); 
     lst.Add("Life Skills"); 
     lst.Add("Life Skills"); 
     lst.Add("Communication"); 
     lst.Add("Careers; Listening Skills;Life Skills; Personal Development; Questioning Skills; Coaching/Mentoring; Recognition; Recruitment and Selection."); 
     lst.Add("No Related Topics"); 

     List<string> newList = new List<string>(); 

     foreach (string str in lst) 
     { 
      var temp = str.Split(';'); 
      if (temp.Length > 1) 
      { 
       for (int i = 0; i < temp.Length; i++) 
       { 
        if (!newList.Contains(temp[i])) 
        { 
         newList.Add(temp[i]); 
        } 
       } 
      } 
      else 
      { 
       if (!newList.Contains(str)) 
       { 
        newList.Add(str); 
       } 
      } 
     } 
0

프로그램에 대해 일종의 파서를 구현하려고합니다. StackOverflow 당신을 위해 프로그램을 작성하지 않을거야하지만 내 생각에 찾고있다 http://boost-spirit.com/home/

아마도 라이센스상의 이유로, 세미콜론 때까지 결과를 버퍼에로드 아마도, 텍스트 입력을로드 버퍼에 문자열을 복사하고 배열로 밀어 넣는 것이 이상적입니다. 거기에서 당신은 파일의 끝에 도달 할 때까지 루핑을 계속할 수 있습니다.

1

당신은 구현하기 위해 Linq를 사용할 수 있습니다 그것은

lst = lst 
    .SelectMany(i => string.Split(";", i)) 
    .Select(i => i.Trim()) 
    .Distinct() 
    .ToList(); 
관련 문제