2013-02-08 85 views
0

我有一個包含各種字符串記錄的列表。一些記錄包含用分號分隔的各種子記錄。舉例如下從列表項中刪除分號

生活技能

沒有相關主題

通信

招聘;聽力技巧;個人發展;提問技巧;教練/輔導; 承認;招聘與選拔。

客服

體育

我想現在要做的是迭代通過記錄單獨所有包含分號確保有沒有重複的記錄。

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

我該怎麼做?

+1

你要什麼與子記錄,一旦你分離出來做什麼? – DGibbs 2013-02-08 12:12:40

+0

是的,這是一個非常重要的考慮因素,我寫了我的答案不知道。 – 2013-02-08 12:14:05

回答

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