首页 > 解决方案 > 如何将一串 0 和 1 转换为布尔数组

问题描述

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

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

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

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

这让我不得不将一个字符串转换10101为一个布尔数组true, false, true, false, true。现在,我希望有预先存在的方法来进行这种转换 - 使用 Java,我很确定它可以使用streamsAPI 来完成,但不幸的是,我还不太擅长 C#。


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

标签: c#arrays

解决方案


单串

如果您有类似“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();

推荐阅读