2014-02-11 77 views
4

我有這個功能從文本提取關鍵字,並排除的話

public static string[] GetSearchWords(string text) 
{ 

    string pattern = @"\S+"; 
    Regex re = new Regex(pattern); 

    MatchCollection matches = re.Matches(text); 
    string[] words = new string[matches.Count]; 
    for (int i=0; i<matches.Count; i++) 
    { 
     words[i] = matches[i].Value; 
    } 
    return words; 
} 

提取所有的話,我想從返回數組中排除的單詞列表,單詞表看起來是

string strWordsToExclude="if,you,me,about,more,but,by,can,could,did"; 

如何修改上述函數以避免返回列表中的單詞。

+0

在我注意到它是c#之前,我把它作爲一個java程序讀取,它真的把我扔到'string'部分。 – royhowie

回答

5
string strWordsToExclude="if,you,me,about,more,but,by,can,could,did"; 
var ignoredWords = strWordsToExclude.Split(','); 
return words.Except(ignoredWords).ToArray(); 

我覺得Except方法適合您的需求

+0

大聲笑,我忘記了'Except'方法存在 – pcnThird

2

如果不強制使用正則表達式,你可以使用一個小LINQ:

void Main() 
{ 
    var wordsToExclude = "if,you,me,about,more,but,by,can,could,did".Split(','); 

    string str = "if you read about cooking you can cook"; 

    var newWords = GetSearchWords(str, wordsToExclude); // read, cooking, cook 
} 



string[] GetSearchWords(string text, IEnumerable<string> toExclude) 
{ 
    var words = text.Split(); 

    return words.Where(word => !toExclude.Contains(word)).ToArray(); 
} 

我假設一個詞是一系列非空白字符。