Feedback

C# - Zweidimensionales Array als "Tabelle" darstellen

Veröffentlicht von am 16.08.2013
(0 Bewertungen)
In manchen Fällen, ist es praktisch, wenn man ein Zweidimensionales Array auch als Zweidimensional darstellen kann. Diese Erweiterungsmethode erfüllt diesen Zweck. Nachfolgend ein Beispielcode zur Verwendung:
            int[,] a = new int[,] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
Console.WriteLine(a.DrawArray2(true));
File.WriteAllText("C:\\test12346784567235632.txt", a.DrawArray2(false));
Console.ReadKey();


Heraus kommt folgendes:
http://code-13.net/Download/Bilder/drawarray2d.png
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Entwickler - Kompakt

Nach Teilnahme an dieser Schulung kennen Sie alle wesentlichen Funktionen des TFS für Entwickler. Sie setzen Software-Entwicklung mit dem Visual Studio Team Foundation Server erfolgreich um.

ASP.NET 2.0 und 3.5

Dieser Kurs vermittelt Ihnen alle Erweiterungen von Microsoft ASP.NET 2.0. Zu diesen zählen u. a. Data Bindung, Master Pages, und Security.

        /// <summary>
        /// Erstelt eine Zweidimensionale Darstellung eines Zweidimensionalen Array.
        /// </summary>
        /// <typeparam name="T">Der Typ von dem die Elemente in dem Array sind.</typeparam>
        /// <param name="array">Das Array, welches formatiert werden soll.</param>
        /// <param name="console"><c>True</c>, wenn Rahmenelemente verwendet werden sollen. Diese Funktionieren auch in der Konsole. Andernfalls <c>False</c>.</param>
        /// <returns>Eine Zeichenfolge, welche eine Tabellenartige Struktur mit den Elementen von <paramref name="array"/> darstellt.</returns>
        public static string DrawArray2<T>(this T[,] array, bool console)
        {
            string brackets = console ? "┌└│┐┘│" : "⎛⎝⎜⎞⎠⎟";//OL - UL - ML - OR - UR - MR
            StringBuilder sb = new StringBuilder();
            int dx = array.GetLength(0);//Dimensionen ermitteln
            int dy = array.GetLength(1);
            for (int x = 0; x < dx; ++x)
            {
                int len = 0;
                for (int i = 0; i < dy; ++i)
                    len = Math.Max(len, array[x, i].ToString().Length);//Maximale Länge eines Elements in der aktuellen Spalte ermitteln.
                ++len;//Trenendes Leerzeichen

                if (x == 0)//Öffnende Klammer hinzufügen
                    sb.Append(brackets[0]);
                else if (x == dx - 1)
                    sb.Append(brackets[1]);
                else
                    sb.Append(brackets[2]);

                sb.Append(" ");//Leerzeichen als Trennung zur Klammer einfügen

                for (int y = 0; y < dy; ++y)
                {
                    sb.Append(array[x, y].ToString().PadRight(len));
                }

                if (x == 0)//Schließende Klammer hinzufügen
                    sb.Append(brackets[3]);
                else if (x == dx - 1)
                    sb.Append(brackets[4]);
                else
                    sb.Append(brackets[5]);
                sb.AppendLine();//Neue Zeile
            }
            return sb.ToString();
        }

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!