c# - 如何将一串 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 -> false
和1 -> true
)。我目前的方法是删除非换行符空白,然后遍历字符串的行。
这让我不得不将一个字符串转换10101
为一个布尔数组true, false, true, false, true
。现在,我希望有预先存在的方法来进行这种转换 - 使用 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();
推荐阅读
- appium-android - centos8 install appium failed:errno ENOENT appium-windows-driver@1.18.1 install: `node install-npm.js`
- angular - Angular 路由页面成功但未显示 html 内容
- python - python显示一个实际上并不存在的错误
- dart - 在飞镖扩展名中有什么好处?
- powerbi - Power BI 中每个组中的筛选、分组依据和计算唯一值
- c - 我应该如何修改我的代码以不输出为 0?
- android - 如何在android中实现带有单位增加的虚线进度条
- azure-devops - 在 azure devops 仪表板上显示较少的代码覆盖率
- android - 输入'未来
' 不是类型 'List 的子类型 ? - c# - Xamarin Forms & Firebase Realtime Database:如果用户名已经存在,如何拒绝用户注册