2014-10-04 81 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更快,因爲此運算速度更快?我在這裏糾正?