You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将0、1构成的字符串转换为布尔数组(C#实现方案咨询)

在C#中简洁实现0/1字符串转二维布尔数组

嘿,这个需求在C#里完全不用手动逐个遍历字符!借助LINQ(类似Java的Streams API)就能写出非常简洁的代码,下面给你两种常见场景的实现方式:

第一步:将输入字符串转为一维布尔数组

你的输入是空格分隔的0、1字符串,我们可以先处理成一维布尔数组:

方式1:按空格分割后转换

如果保留空格作为分隔符,直接分割后转换:

var input = "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";
// 分割为单个"1"/"0"字符串,再转为bool数组(1→true,0→false)
bool[] oneDBoolArray = input.Split(' ')
                            .Select(s => s == "1")
                            .ToArray();

方式2:移除空格后按字符转换

如果先移除所有空格得到连续的0/1字符串,也可以直接遍历字符转换:

var input = "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";
var cleanInput = input.Replace(" ", "");
// 遍历每个字符,判断是否为'1'来生成bool数组
bool[] oneDBoolArray = cleanInput.Select(c => c == '1').ToArray();

第二步:将一维数组转为二维布尔数组

假设你需要按固定行数/列数拆分(比如示例中25个元素,拆成5行5列),可以用以下方法:

.NET 6+ 版本(推荐):使用Chunk方法

.NET 6及以上提供了Chunk方法,可以直接将数组按指定长度拆分:

int rowSize = 5; // 每行的元素数量
bool[][] twoDBoolArray = oneDBoolArray.Chunk(rowSize).Select(chunk => chunk.ToArray()).ToArray();

兼容旧版本.NET:用LINQ分组实现

如果是.NET Framework或低于6的.NET版本,可以通过LINQ分组来模拟拆分:

int rowSize = 5;
bool[][] twoDBoolArray = oneDBoolArray
    .Select((value, index) => new { Value = value, Index = index })
    .GroupBy(item => item.Index / rowSize) // 按行索引分组
    .Select(group => group.Select(item => item.Value).ToArray())
    .ToArray();

这样整个流程就完成了,完全不需要手动写循环逐个判断,和Java的Streams一样简洁高效!

内容的提问来源于stack exchange,提问作者PixelMaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:15:09