c# - 如何将 0 和 1 的字符串转换为 bool 数组

标签 c# arrays

基本上,标题说明了我想做什么。

我有一个字符串,如下所示。

1 0 1 0 1
0 0 0 0 0
1 0 0 0 1
0 0 0 0 0
1 0 1 0 1

我想将其转换为二维 bool 数组(显然,0 -> false1 -> true)。我当前的方法是删除非换行空白,然后遍历字符串的行。

这让我需要将诸如 10101 的字符串转换为 true, false, true, false, true 的 bool 数组。现在,我希望有预先存在的方法来进行这种转换——使用 Java,我很确定它可以使用 streams API 来完成,但不幸的是,我不是那样还熟悉 C#。


因此,我的问题是:是否存在以紧凑方式进行此转换的现有方法?还是我必须手动遍历字符串并对每个字符进行 == 0/==1 比较?

最佳答案

单字符串

如果您有一个类似于“10101”的字符串,您可以使用 LINQ 将其转换为位数组。

string input = "10101";
bool[] flags = input.Select( c => c == '1' ).ToArray();

字符串数组

LINQ 在处理二维数组时表现不佳,但在处理锯齿状数组时效果很好。如果 bool[][] 可以,则此解决方案应该有效:

string[] input = { "10101","01010" };

bool[][] flags = input.Select
(
    s => s.Select
    ( 
        c => c == '1'
    )
    .ToArray()
)
.ToArray();

关于c# - 如何将 0 和 1 的字符串转换为 bool 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50439631/

相关文章:

c# - 使用 C#/ADO.Net 实体复制大型数据库时内存不足

javascript - 我的数据应该在 ASP.NET MVC 应用程序中的何处进行验证?

c# - 如何将 Enum 值转换为常量 C#

c# - 在上下文中找不到类型,可能是映射问题

c# - 在 .NET 4.0 中使用 task.run 与 task.run 和 continuewith 进行异步/等待

javascript - 将对象数组转换为数组数组(按属性)

java - 根据java中的索引号将元素移动到数组的前面

C语言-二维数组

arrays - 计算数组中的线性元素

arrays - 在 Assembly (x86) 中添加 2D 数组