if (r.Contains("Word1" + "Word2"))
此代码检查“Word1”和“Word2”是否一起在字符串中,例如它们之间没有任何内容,但是如何检查字符串是否包含这两个单词,而不管它们之间的顺序或任何其他单词?
例如,如果字符串是,则返回 true
Word1Word2
返回假
Word1 Text Word2
只需验证每个单词都包含在r
.
if (r.Contains("Word1") && r.Contains("Word2"))
此代码检查原始字符串中是否存在"Word1"
AND "Word2"
,无论其在字符串中的相对位置。
编辑:
正如@Alexei Levenkov (+1) 在他的评论中所指出的,使用方法可以达到相同的解决方案IndexOf
。
if (r.IndexOf("Word1", StringComparison.InvariantCultureIgnoreCase) > -1
&& r.IndexOf("Word2", StringComparison.InvariantCultureIgnoreCase) > -1))
检查每个单词是否包含在字符串中:
if (r.Contains("Word1") && r.Contains("Word2")))
如果这是您经常做的事情,您可以通过制作扩展方法来提高可读性(IMO)和简洁性:
public static bool ContainsAll(this string source, params string[] values)
{
return values.All(x => source.Contains(x));
}
像这样使用:
"Word1 Text Word2".ContainsAll("Word1", "Word2") // true
您可以为此使用&&
运算符:
if (r.Contains("Word1") && r.Contains("Word2"))
请注意,这将检查两个单词是否以任何顺序存在。如果必须确保第一个单词在第二个之前,请获取每个单词的索引,并检查第一个单词的索引是否低于第二个单词的索引:
var ind1 = r.IndexOf("Word1");
var ind2 = r.IndexOf("Word2");
if (ind1 >= 0 && ind2 > ind1) {
...
}