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
}
这种方法不要求元素是一个完整的单词(即上面的片段将返回true
,即使该单词"fox"
不是作为单个单词出现在那里)。
您可以拆分字符串并使用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));
我认为您需要检查一个字符串是否包含在其他字符串中(我不知道性能)
foreach(string strLine in words)
{
if(strLine.Contains(str)) //or str.Contains(strLine)
{
return true;
}
}
//return false;