2010-02-16 20 views
10

Wie würden Sie ein Array von Booleans in eine Zeichenfolge wie "false, true, true, false" konvertieren - mit so wenigen Codezeilen wie möglich?Ordentlicher Code zum Konvertieren von bool [] -> "false, true, true, false"

Python ermöglicht es mir, die folgende (sehr schön und sauber) zu verwenden:

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

In C# string.Join nur erlaubt es mir, einen Array von Strings zu verbinden.

Also, was ist ein kurzer Weg, um das gleiche in C# zu tun?

Antwort

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

Wie sei:

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

Dies würde eine 'InvalidCastException' auslösen. –

+0

@Joao, yeah kompiliert es dort, aktualisiert mit ConvertAll – James

+0

Sie können die '()' nach 'neue Liste ' entfernen, wenn Sie Elemente angeben. –

1

Etwas nach dem Vorbild von

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

dann die zählbaren s verwenden, um das String-Array zu füllen?

Nicht dies tatsächlich getestet - dies ist nur, wie ich es könnte nähern, wenn ich es betrachten gebeten wurden, ...

+0

Danke für die Bearbeitung John - Ich habe jetzt gelernt (Einzug), wie man Text als Code markiert ... –

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

Scheint nicht zu funktionieren, weil der Lambda-Rückgabewert Boolean sein muss. – AndiDog

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

Wenn Sie .NET 4 verwenden , die folgende Zeile ist genug, weil String.Join<T> intern die ToString() -Methode für jedes Element aufruft.

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

>>>> False, True, True, False