2014-10-04 84 views
0

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

我想查找包含在数组搜索中的单词,在列单词收集中寻找。

我该怎么做?

我正在试着这个。

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

} 
+4

搜索阵列有什么用?使用wordFind有什么用? – brz 2014-10-04 21:11:38

+0

你能否提供更多的上下文?我不明白你在做什么。 – BradleyDotNET 2014-10-04 21:13:18

+0

在isWordFound()中,你有一个bool变量“found”,并且在“for”循环中你将它误用为int,而不是bool。你需要两个不同的变量。 – RenniePet 2014-10-04 21:18:59

回答

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

上述用于第一字“蛋糕”首先搜索的代码,而对于“蛋糕”和“TEAPOT”,在阵列搜索下一个代码的搜索。 请注意,这里的Dump方法是LinqPad内部用于显示结果的扩展方法。如果你将使用LinqPad之外的代码(我想你想要的),当然删除上面的两行代码。 另请注意,Any运算符比Contains更快,因为此运算速度更快?我在这里纠正?