如何将0和1的字符串转换为布尔数组

Pix*_*ter 7 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
Run Code Online (Sandbox Code Playgroud)

我想把它转换成一个二维布尔数组(显然,0 -> false1 -> true).我目前的方法是删除非linebreak-whitespace,然后迭代字符串的行.

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


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

Joh*_* Wu 5

单弦

如果您有一个类似"10101"的字符串,则可以使用LINQ将其转换为位数组.

string input = "10101";
bool[] flags = input.Select( c => c == '1' ).ToArray();
Run Code Online (Sandbox Code Playgroud)

字符串数组

LINQ在二维数组中不能很好地工作,但它适用于锯齿状数组.如果bool[][]愿意,这个解决方案应该工作:

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

bool[][] flags = input.Select
(
    s => s.Select
    ( 
        c => c == '1'
    )
    .ToArray()
)
.ToArray();
Run Code Online (Sandbox Code Playgroud)

  • 如果我没有错,那么OP需要原始"盒子"中的二维boolan数组(即行和列) (2认同)