基本上,标题说明了我想做什么。
我有一个字符串,如下所示。
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 -> false
和 1 -> 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/