在数组中查找单词?

时间:2014-10-04 21:07:51

标签: c# arrays

我试图在列表中查找单词。我有一个带有要搜索的单词的数组,我有一个带有要查找的单词的字符串,我有一个列表,我添加了字母。

我想找到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;        
    }

}

1 个答案:

答案 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包含更快,因为这样可以更快地退出?我在这里纠正吗?