我需要遍历包含字符串句子的列表,并查找包含其他列表中的字符串单词的句子,并将它们添加到单独的列表中以便显示。下面的代码多次打印出相同的句子,所以我想知道嵌套的foreach循环的正确格式是什么?
List<string> sentenceList = new List<string>();
sentenceList.Add("Dog ate a bone");
sentenceList.Add("Cat had a ball and bone");
List<string> keywords = new List<string>();
keywords.Add("bone");
keywords.Add("Cat")
List<string> NewList = new List<string>();
foreach (string sentence in sentenceList)
{
foreach (string word in keywords)
{
if (sentence.Contains(word))
{
NewList.Add(sentence);
}
}
}
我得到的是输出:
狗吃了一根骨头
猫有一个球和骨头 猫有一个球和骨头
我希望每个句子只出现一次,但为什么它会重复两次?我做错了什么?
答案 0 :(得分:0)
在两个句子中,“骨头”是同一个词 您的关键字列表应包含
List<string> keywords = new List<string>();
keywords.Add("Dog"); // or keywords.Add("ate")
keywords.Add("Cat")
答案 1 :(得分:0)
它再次添加是因为您没有检查列表中是否已存在sentence
。
您可以检查它是否已经存在,不要添加它:
if (sentence.Contains(word))
{
if(!NewList.Contains(sentence))
NewList.Add(sentence);
}
您的代码:
foreach (string sentence in sentenceList)
{
foreach (string word in keywords)
{
if (sentence.Contains(word))
{
if(!NewList.Contains(sentence))
NewList.Add(sentence);
}
}
}