首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何测试字符串数组是否为布尔值

如何测试字符串数组是否为布尔值
EN

Stack Overflow用户
提问于 2019-02-22 04:03:58
回答 4查看 157关注 0票数 0

我需要测试字符串数组中的所有值是否仅为"0“或"1”,并尝试了以下代码,但没有成功:

代码语言:javascript
复制
bool isBool = Array.TrueForAll(str, val => val.Trim() == "0" || val.Trim() == "1");

代码语言:javascript
复制
bool isBool = str.All(val => val.Trim() == "0" || val.Trim() == "1");

因为我使用了||条件,所以有没有不同的方法?

EN

回答 4

Stack Overflow用户

发布于 2019-02-22 04:14:24

您可以尝试任何()并在第一个失败条件!str.Any(x => x.Trim() != "0" && x.Trim() != "1")中返回

票数 0
EN

Stack Overflow用户

发布于 2019-02-22 04:26:09

我假设你的意思是这些值必须全是1还是0?在这种情况下,您需要分别测试每个案例。当数组只包含0或1时,你现有的代码是真的。但是,如果其中任何一个值是2,它就是假的。一种解决方案:

代码语言:javascript
复制
var allAreZero = new string[] { "  0  ", "  0", "  0" };
var allAreOne = new string[] { "  1  ", "1", "  1" };
var mixedOnesAndZeros = new string[] { "  1  ", "0", "  1" };

private bool ArrayIsExclusivelyTrueOrFalse(string[] data)
{
    return data.All(i => int.TryParse(i, out int value) && value == 0) ||
           data.All(i => int.TryParse(i, out int value) && value == 1);
}

ArrayIsExclusivelyTrueOrFalse(allAreZero);          // true
ArrayIsExclusivelyTrueOrFalse(allAreOne);           // true
ArrayIsExclusivelyTrueOrFalse(mixedOnesAndZeros);   // false
票数 0
EN

Stack Overflow用户

发布于 2019-02-22 06:11:27

如果您想确保数组中的所有值都是"0""1" (但不是"0""1"的混合,就像我最初读到的那样),那么一种方法是确保Distinct项的数量(修剪后)的Count1 (意味着它们都是相同的),并且该项是有效值集的成员(在下面的代码中,我们只检查第一项,因为我们已经知道它们在这一点上都是相同的)。

例如:

代码语言:javascript
复制
var validValues = new[] {"0", "1"};
var isBool = str.Select(i => i.Trim()).Distinct().Count() == 1 &&
             validValues.Contains(str[0].Trim());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54815365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档