string.Contains中的C#OR语句

时间:2013-01-01 22:02:51

标签: c#

我有这个:

        if (_strInput.Contains("xxx") && _strInput.Contains("yyy" || "zzz"))
        {
            _strOutput[0] = "Success";
        }

但是我收到了这个错误:

错误1运营商'||'不能应用于'string'和'string'

类型的操作数

基本上我正在寻找的是一个字符串中存在的值和一个存在的值的值中的一个值。任何帮助都会很棒,提前谢谢!

3 个答案:

答案 0 :(得分:4)

也许你的意思是这个?

    if (_strInput.Contains("xxx") && (_strInput.Contains("yyy") || _strInput.Contains("zzz"))
    {
        _strOutput[0] = "Success";
    }

只有在_strInput包含'xxx'和'yyy'或'zzz'时才会执行。

答案 1 :(得分:3)

您不能在一个Contains中使用这两个字符串,请将它们括在括号中:

if (_strInput.Contains("xxx") &&( _strInput.Contains("yyy") 
                               || _strInput.Contains("zzz"))
{
    _strOutput[0] = "Success";
}

因此字符串必须包含“xxx”和“yyy”或“zzz”。

答案 2 :(得分:2)

如果这在您的代码库中很常见,您可以使用扩展方法。

public static class ExtensionMethod
{
    public static bool ContainsAny(this string str, params string[] values)
    {
        return values.Any(x => str.Contains(x));
    }
}

试验:

"abcd".ContainsAny("a", "c"); //True
"abcd".ContainsAny("z"); //False
"abcd".ContainsAny("z", "ac", "ab") //True

所以你的代码最终看起来像

if (_strInput.Contains("xxx") && _strInput.ContainsAny("yyy", "zzz"))
{
    _strOutput[0] = "Success";
}