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
}

这种方法不要求元素是一个完整的单词(即上面的片段将返回true,即使该单词"fox"不是作为单个单词出现在那里)。

于 2012-11-26T04:19:36.047 回答
0

您可以拆分字符串并使用Enumerable.Intersect. 对于长字符串,它比Any+更有效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 回答
0

我认为您需要检查一个字符串是否包含在其他字符串中(我不知道性能)

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