繁体   English   中英

检查数组是否包含无效值并返回false?

[英]Check if an array contains an invalid value and return false?

这可能很简单,但我想我还没有喝咖啡。

我有一个包含四个值的数组,我想检查它们是否无效,然后将布尔值设置为false,否则设置为true。

bool validDecoding = false;
foreach (string decodedValue in arrayOfvalues)
{
    if (decodedValue.Contains("invalid") || decodedValue.Contains("length") || decodedValue.Contains("bad"))
    {
        validDecoding = false;
    }
    else
    {
        validDecoding = true;
    }
}

但是,如果最后一个不包含无效,长度或错误,则将validDecoding设置为true,但是如果一个或多个值无效,我希望它为false。

请帮忙?

提前致谢。

包括System.Linq命名空间,您可以执行以下操作:

validDecoding = !arrayOfvalues.Any(
    value => value.Contains("invalid") || value.Contains("length") || value.Contains("bad"));

首先将有效设置为true,然后在无效的循环中将其设置为false。

bool validDecoding = true;
foreach (string decodedValue in arrayOfvalues)
{
    if (decodedValue.Contains("invalid") || decodedValue.Contains("length") || decodedValue.Contains("bad"))
    {
        validDecoding = false;
        break;
    }
}

这样一来,它永远不会恢复为真! (您需要更多咖啡;-)

bool validDecoding = false;
foreach (string decodedValue in arrayOfvalues)
{
    if (!decodedValue.Contains("invalid") && !decodedValue.Contains("length") && !decodedValue.Contains("bad"))
    {
        validDecoding = true;
        break;
    }
}

最初将您的validDecoding设置为“ true”,并且只有在中断时才重置为false。

bool validDecoding = true;
foreach (string decodedValue in arrayOfvalues)
{
    if (decodedValue.Contains("invalid") || decodedValue.Contains("length") || decodedValue.Contains("bad"))
    {
        validDecoding = false;
    }
    else
    {
        //Do Nothing
    }
}

我喜欢安德鲁的回答。 如果没有可用的Linq,请尝试以下选项:

// Note: Name boolean variables like they are a question
bool isValidDecoding = true;

foreach (string decodedValue in arrayOfvalues)
{
    isValidDecoding &= !decodedValue.Contains("invalid")
        && !decodedValue.Contains("length")
        && !decodedValue.Contains("bad");
}

当您的测试包含日志记录并且您想在终止之前查找所有失败时,我特别喜欢此选项。

不过,我会非常警惕decodedValue.Contains("length") 也许它可以在您的情况下工作,但是对于其他情况,它可能会带来错误的否定结果,并且肯定会使您的代码不清楚。 您应该仔细检查,以确保没有一个唯一/指示性的值可以确保在这些情况下解码效果不佳。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM