1

我有这个:

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

但我收到此错误:

错误 1 ​​运算符“||” 不能应用于“字符串”和“字符串”类型的操作数

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

4

3 回答 3

4

也许你是这个意思?

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

只有当 _strInput 包含 'xxx' 和 'yyy' 或 'zzz' 时才会执行此操作。

于 2013-01-01T22:04:57.430 回答
3

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

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

所以字符串必须包含“xxx”和“yyy”或“zzz”。

于 2013-01-01T22:04:39.117 回答
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";
}
于 2013-01-01T22:12:10.997 回答