簡體   English   中英

從列表項中刪除分號

[英]Remove semicolons from list items

我有一個包含各種字符串記錄的列表。 一些記錄由分號分隔的各種子記錄組成。 例如如下

生活技能

沒有相關主題

通訊

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

客戶服務

體育

我現在想做的是遍歷記錄,將包含分號的所有記錄分開,確保沒有重復

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

我怎樣才能做到這一點?

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

您可以使用Linq來實現它

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

您想為程序實現某種解析器。 StackOverflow不會為您編寫程序,但是我建議您瀏覽http://boost-spirit.com/home/

如果出於許可原因選擇滾動自己,則加載文本輸入,或者將結果加載到緩沖區中,直到達到分號為止,然后將緩沖區復制到字符串中並將其推入數組將是理想的選擇。 從那里您可以繼續循環播放,直到到達文件末尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM