2010-02-16 71 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