如何编写一个函数来判断字符串是否包含数组中的任何元素,如果包含则返回 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"
没有作为单个单词出现)。
if (array.Any(s => myStr.Contains(s)) {
同样可以,我相信。 - JeffmyStr.IndexOf(s, StringComparison.OrdinalIgnoreCase)
来实现不区分大小写。 - Sergey Kalinichenkobool b = words.Any(str);
,意思是判断字符串数组中是否有任何一个字符串包含给定的字符串。 - M.StrammEnumerable.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;
foreach
+String.IndexOf
- zerkms