从列表项中删除分号
本文关键字:删除 列表 | 更新日期: 2023-09-27 17:58:14
我有一个包含各种字符串记录的列表。有些记录由用分号分隔的各种子记录组成。例如,
生活技能
无相关主题
通信
职业;听力技能;个人发展;提问技巧;辅导/指导;认出招聘和选拔。
客户服务
体育
我现在要做的是遍历记录,将所有包含分号的记录分隔开,并确保没有重复的记录。
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/
如果您选择滚动自己的内容,也许是出于许可的原因,加载文本输入,也许将结果加载到缓冲区中,直到达到分号,那么将缓冲区复制到字符串并将其推入数组将是理想的选择。从那里你可以一直循环直到你到达文件的末尾。