0

「テキストメッセージ」ではない単語として配列コンテンツのいずれかが含まれている場合、テキストを確認するにはどうすればよいですか?

string text = "some text here";
string[] array1 = { "text", "here" };
string[] array2 = { "some", "other" };

SOでこのコードを見つけました。どうすれば適応できますか?

string regexPattern = string.Format(@"\b{0}\b", Regex.Escape(yourWord));
if (Regex.IsMatch(yourString, regexPattern)) {
    // word found
}

また、正規表現はこの作業に最適なアプローチですか? または、foreachループを使用する必要がありますか?

4

4 に答える 4

8

また、正規表現はこの作業に最適なアプローチですか?

他にクリーンで効率的で読みやすいアプローチがなくなるまで正規表現を避けますが、それは好みの問題だと思います。

配列内の単語のいずれかが文字列の単語に含まれていますか? Linq を使用できます。

string[] words = text.Split();
bool arraysContains = array1.Concat(array2).Any(w => words.Contains(w));
于 2013-04-26T07:08:08.850 に答える
1

text配列に文字列が含まれているかどうかを確認する場合は、次のようarray1に試してください。

text.Split(' ').Intersect(array1).Any()
于 2013-04-26T07:01:24.787 に答える
0

このコードを試してください:

string text = "some text here";

string[] array1 = { "text", "here" };
string[] array2 = { "some", "other" };

bool array1Contains = array1.Any(text.Contains);
bool array2Contains = array2.Any(text.Contains);
于 2013-04-26T07:13:05.673 に答える
0

単語がスペースだけでなく、引用符やコンマなどに隣接している可能性がある場合は、単に使用するよりも少しSplit()賢くすることができます:

var words = Regex.Split(text, @"\W+");
bool anyFound = words
    .Intersect(array1.Union(array2), StringComparer.CurrentCultureIgnoreCase)
    .Any();
于 2013-04-26T07:24:47.320 に答える