转换 bool[] -> "1,0,0,1,1" 的简洁代码

Posted

技术标签:

【中文标题】转换 bool[] -> "1,0,0,1,1" 的简洁代码【英文标题】:Neat code to convert bool[] -> "1,0,0,1,1" 【发布时间】:2022-01-07 01:28:48 【问题描述】:

如何使用尽可能少的代码行将布尔数组转换为像“1,0,0,1,1”这样的字符串? 我想将它转换为字符串,所以我有一个新字符串“@10011#”,我将通过串行端口发送它。 那么在 C# 中什么是简短的方法呢?

【问题讨论】:

string.Concat(bools.Select(x => x ? "1" : "0"))? 你能告诉我们你尝试了什么,告诉我们你遇到了什么问题吗? string s = "@" + string.Join(",", bools.Select(b => b?1:0)) + "#"; string.Join(',', bools.Select(Convert.ToInt32)) 【参考方案1】:

你可以用这个

var toSerial = $@"@string.Join(",", arrayOfBool.Select(b => b ? "1" : "0"))#";

这只是一行代码,因此满足了“尽可能少的代码行”的要求,同时仍然足够冗长以提高可读性。任何更短的都更适合Code Golf。

【讨论】:

由于$@"@ 的可读性,我建议使用常规的字符串连接"@" + string.Join...。我想知道是不是$"@string.Join...

以上是关于转换 bool[] -> "1,0,0,1,1" 的简洁代码的主要内容,如果未能解决你的问题,请参考以下文章

C# 能把字符串转换成bool 类型吗?

Python---蹒跚学步

几种字符串方法

boolfor循环.

boost::variant - 为啥“const char*”转换为“bool”?

无法将 Number(1,0) 转换为 bool