2009-03-09 5 views
3

In Java haben die java.util.Arrays Klasse mehrere statische toString(...) Methoden, die ein Array nehmen und seine Zeichenfolgendarstellung (dh die Zeichenfolgendarstellung des Inhalts) zurückgeben des Arrays getrennt durch Kommas und die gesamte Darstellung in eckigen Klammern - zB "[1, 2, 3]")..NET-Äquivalent von java.util.Arrays.toString (...) Methoden in Java

Gibt es eine äquivalente Methode/Funktionalität in .NET?

Ich bin auf der Suche nach einer Methode, die dies tut, ohne manuell eine Schleife/Methode zu erstellen, um durch das Array zu iterieren.

Antwort

3

Die String.Join Methode.

[Sie müssen die eckigen Klammern selbst hinzufügen]

+0

Diese Lösung funktioniert nur, wenn das Array bereits vom Typ string ist. – JaredPar

+0

Wahr. Ich hatte angenommen, dass das gefragt wurde. –

+0

@Mitch, basierend auf dem [1, 2, 3] Beispiel dachte ich, er suchte nach einer allgemeineren Lösung. Aber er hat deine akzeptiert, also hatte ich es rückwärts. – JaredPar

1

Versuchen Sie dies. Es behandelt keine NULL-Werte, aber es funktioniert gegen Werttypen und Referenztypen. Da es sich um eine Erweiterungsmethode handelt, können Sie einfach .ToElementString() für jede Array-Instanz aufrufen.

public static string ToElementString<T>(this T[] array) { 
    var middle = array.Select(x => x.ToString().Aggregate((l,r) => l+","+r); 
    return "[" + middle + "]"; 
} 

Hier ist eine Version, die einen Builder verwendet und wird möglicherweise ein bisschen effizienter sein (nur ein Profiler sicher weiß). Es behandelt auch ordnungsgemäß Nullwerte.

public static string ToElementString<T>(this T[] array) { 
    var builder = new StringBuilder(); 
    builder.Append('['); 
    for(int i =0; i < array.Length; i++) { 
    if (i > 0) { 
     builder.Append(','); 
    } 
    builder.Append(array[i]); 
    } 
    builder.Append(']'); 
    return builder.ToString(); 
}