[英]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.