部分文字列を確認するだけでよい場合は、単純な LINQ クエリを使用できます。
var q = words.Any(w => myText.Contains(w));
// returns true if myText == "This password1 is weak";
単語全体をチェックしたい場合は、正規表現を使用できます。
すべての単語の論理和である正規表現との照合:
// you may need to call ToArray if you're not on .NET 4
var escapedWords = words.Select(w => @"\b" + Regex.Escape(w) + @"\b");
// the following line builds a regex similar to: (word1)|(word2)|(word3)
var pattern = new Regex("(" + string.Join(")|(", escapedWords) + ")");
var q = pattern.IsMatch(myText);
正規表現を使用して文字列を単語に分割し、単語コレクションのメンバーシップをテストします (単語を a のHashSet
代わりに a にすると高速になりますList
)。
var pattern = new Regex(@"\W");
var q = pattern.Split(myText).Any(w => words.Contains(w));
この基準に従って文のコレクションをフィルタリングするには、それを関数に入れて呼び出す必要がありますWhere
。
// Given:
// bool HasThoseWords(string sentence) { blah }
var q = sentences.Where(HasThoseWords);
またはラムダに入れます:
var q = sentences.Where(s => Regex.Split(myText, @"\W").Any(w => words.Contains(w)));
Ans From => List<string> 内の単語が@Rのテキストに含まれているかどうかを確認する方法。マルティニョ・フェルナンデス