我试图在列表中查找单词。我有一个带有要搜索的单词的数组,我有一个带有要查找的单词的字符串,我有一个列表,我添加了字母。
我想找到Array搜索中包含的单词,在List wordsCollected中查找。
我该怎么做?
我正在尝试这个。
private string[] search = {"CAKE", "COFFEE"}; //words to search
private string wordFind = "CAKE"; //word find
private List<String> wordsCollected = new List<string>(); //add letters
/** add letters - A B C D E F G H .... */
public void addWordsCollected(string p){
if(!wordsCollected.Contains(p)){
wordsCollected.Add(p);
}
}
/** check if wordFind is found */
public bool isWordFound(){
bool found = false;
for (int x = 0; x < wordsCollected.Count; x++){
found = wordsCollected[x].IndexOf(wordFind);
if(found >= 0){
break;
found = true;
}
}
return found;
}
}
答案 0 :(得分:1)
一种可能性是使用LINQ在字符串数组中查找特定的单词。但是,如果你考虑接受一个字符串数组来搜索其他字符串数组,那将会提供更多的通用解决方案(一个字要搜索,或者很多)。
我在LinqPad中提供的一些代码应该比你在这里列出的代码更紧凑,使用LINQ,我在LinqPad中测试了它,如果我已经理解了你想在这里解决的问题,它可能会是一个解决方案:
void Main()
{
string[] search = { "CAKE", "COFFEE", "TEA", "HONEY", "SUGAR", "CINNEMON" };
string[] wordsToFind = { "CAKE", "TEAPOT" };
List<String> wordCollected = search.Where(s => s == wordsToFind[0]).ToList();
wordCollected.Dump();
wordCollected = search.Where(x => wordsToFind.Any(w => w == x)).ToList();
wordCollected.Dump();
}
上面的代码首先搜索第一个单词“CAKE”,而下一个代码在数组搜索中搜索“CAKE”和“TEAPOT”。 请注意,此处的转储方法是LinqPad内部的扩展方法,用于显示结果。如果你将使用LinqPad之外的代码(我猜你想要),当然要删除上面两行。 另请注意,Any运算符可能比Conta包含更快,因为这样可以更快地退出?我在这里纠正吗?