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

本文关键字:返回 false 无效 数组 是否 包含 检查 | 更新日期: 2023-09-27 17:49:24

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

我有一个有四个值的数组,我想检查它们中是否有无效的,然后设置一个布尔值为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;
    }
}

但是如果最后一个不包含invalid, length或bad,那么validDecoding设置为true,但如果一个或多个值无效,我希望它为false。

请帮忙吗?

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

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

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

首先将valid设置为true,如果无效,则在循环中将其设置为false。

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

这样就不会被设为true了!(你还需要咖啡;-))

将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
    }
}

我喜欢Andrew的回答。如果没有可用的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")。也许它在您的场景中有效,但它可能会在其他情况下给出错误的否定,并且肯定会使您的代码不那么清晰。您应该仔细检查是否存在更独特/指示性的值,以确保您在这些情况下有一个错误的解码。