2010-02-16 86 views
10

你会如何将一个布尔值数组转换为像“假,真,真,假”的字符串 - 可能?整洁的代码转换布尔[] - >“假,真,真,假”

Python允许我使用下面的(非常漂亮和干净):

", ".join(map(str, [False, True, True, False])) 

在C#中,string.Join只允许我加入字符串数组。

那么在C#中做同样的简短方法是什么?

回答

27
var array = new[] { true, false, false }; 
var result = string.Join(", ", array.Select(b => b.ToString()).ToArray()); 
Console.WriteLine(result); 
2
var boolStrings = string.Join(",", new List<bool> { false, true, true, false } 
     .ConvertAll(x => x.ToString()).ToArray()); 
4

如何:

String.Join(", ", new List<Boolean>() { true, false, false, true }.ConvertAll(x => x.ToString()).ToArray()) 
+0

这会抛出一个'InvalidCastException'。 – 2010-02-16 13:01:30

+0

@Joao,是刚刚编译它,使用ConvertAll更新 – James 2010-02-16 13:02:32

+0

当你指定元素时,你可以在'new List '之后移除'()'。 – 2010-02-16 13:06:08

1

沿

var s = from item in blnArray select item.Tostring(); 

然后用枚举s到填充字符串数组东西线?如果您使用的.NET 4这只是我怎么可能接近它,如果有人问我看它......

+0

感谢您的编辑约翰 - 我现在已经了解到(缩进)如何将文本标记为代码... – 2010-02-16 16:11:17

1
var str = string.Join(", ", new List<Boolean>() {false, true, false}.ToArray()); 
Console.WriteLine(str.ToString()); 
1
var bools = new bool[] {false, true, true, false}; 
var strings = bools.Aggregate((x,y) => x.ToString()+","+y.ToString()); 
+0

由于lambda返回值必须是布尔值,因此似乎不起作用。 – AndiDog 2010-02-16 18:08:38

4
arrayOfBools.Select(x => x.ToString()).Aggregate((x, y) => x + ", " + y) 
2

-

没有实际测试过这,因为String.Join<T>内部调用ToString() - 每个项目的方法,下面的行就足够了。

Console.WriteLine(string.Join(", ", new[] { false, true, true, false })); 

>>>> False, True, True, False