true
文字列に配列の要素が含まれている場合に返す関数を作成するにはどうすればよいですか?
このようなもの:
string str = "hi how are you";
string[] words = {"hi", "hey", "hello"};
戻りtrue
ます。
次のように実行できます。
var array = new[] {"quick", "brown", "fox"};
var myString = "I love foxes.";
if (array.Any(s => myStr.IndexOf(s) >= 0)) {
// One of the elements is there
}
このアプローチでは、要素が完全な単語である必要はありません(つまり、単語が 1 つの単語として存在しなくtrue
ても、上記のフラグメントは を返します)。"fox"
文字列が他の文字列に含まれているかどうかを確認する必要があると思います(パフォーマンスについてはわかりません)
foreach(string strLine in words)
{
if(strLine.Contains(str)) //or str.Contains(strLine)
{
return true;
}
}
//return false;
文字列を分割して使用できますEnumerable.Intersect
。Any
+よりも長い文字列の方がはるかに効率的ですIndexOf
。
var any = words.Intersect(str.Split()).Any();
ループする必要はありません。より高速な方法は次のとおりです。
string [] arr = {"One","Two","Three"};
var target = "One";
var results = Array.FindAll(arr, s => s.Equals(target));