7

true文字列に配列の要素が含まれている場合に返す関数を作成するにはどうすればよいですか?

このようなもの:

string str = "hi how are you";
string[] words = {"hi", "hey", "hello"};

戻りtrueます。

4

4 に答える 4

9

次のように実行できます。

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"

于 2012-11-26T04:19:36.047 に答える
0

文字列が他の文字列に含まれているかどうかを確認する必要があると思います(パフォーマンスについてはわかりません)

foreach(string strLine in words)
 {
    if(strLine.Contains(str)) //or str.Contains(strLine)
    {
      return true;
    }
 }
 //return false;
于 2012-11-26T04:32:13.513 に答える
0

文字列を分割して使用できますEnumerable.IntersectAny+よりも長い文字列の方がはるかに効率的ですIndexOf

var any = words.Intersect(str.Split()).Any();
于 2012-11-26T04:22:49.407 に答える
0

ループする必要はありません。より高速な方法は次のとおりです。

   string [] arr = {"One","Two","Three"};
   var target = "One";
   var results = Array.FindAll(arr, s => s.Equals(target));
于 2012-11-26T04:23:33.803 に答える