c#不包含多个单词

Fir*_*ond 6 c# contains

   if (r.Contains("Word1" + "Word2"))
Run Code Online (Sandbox Code Playgroud)

此代码检查"Word1"和"Word2"是否在字符串中,例如它们之间没有任何内容,但是如何检查字符串是否包含这两个单词而不管它们之间的顺序或任何其他单词?

如果string是,则返回true

    Word1Word2
Run Code Online (Sandbox Code Playgroud)

返回false

    Word1 Text Word2
Run Code Online (Sandbox Code Playgroud)

Huo*_*rds 16

只需验证每个单词是否包含在内r.

if (r.Contains("Word1") && r.Contains("Word2"))
Run Code Online (Sandbox Code Playgroud)

此代码检查原始字符串中是否存在"Word1" AND "Word2",无论其在字符串中的相对位置如何.

编辑:

正如@Alexei Levenkov(+1)关于他的评论的注释,可以使用IndexOf方法达到相同的解决方案.

if (r.IndexOf("Word1", StringComparison.InvariantCultureIgnoreCase) > -1 
    && r.IndexOf("Word2", StringComparison.InvariantCultureIgnoreCase) > -1))
Run Code Online (Sandbox Code Playgroud)

  • +1.请注意,使用`IndexOf`通常更好,因为您可以指定`IgnoreCase`(与`Contains`不同). (3认同)

Tim*_* S. 7

检查字符串中是否包含每个单词:

if (r.Contains("Word1") && r.Contains("Word2")))
Run Code Online (Sandbox Code Playgroud)

如果您经常这样做,可以通过制作扩展方法来提高可读性(IMO)和简洁性:

public static bool ContainsAll(this string source, params string[] values)
{
    return values.All(x => source.Contains(x));
}
Run Code Online (Sandbox Code Playgroud)

使用如下:

"Word1 Text Word2".ContainsAll("Word1", "Word2") // true
Run Code Online (Sandbox Code Playgroud)