Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Ровная таблица в консоли

#c_sharp #console #консоль


Требуется вывести в консоли ровную таблицу.
В данный момент решил это с помощью:

Console.Write("{0, -20}|", text);


Этим кодом я задал минимальное количество символов в столбце, но если символов будет
>20 - всё сломается.
Как обрезать вывод, если строка больше 20-ти символов?
    


Ответы

Ответ 1



В два приёма, разумеется. Собрать все строки вывода, выяснить максимальную длину. На основе максимальной длины сформировать форматную строку. Выводить через неё. В вашем случае вместо вывода у вас будет var column1 = new List(); column1.Add(text); А когда все строки будут добавлены, то var maxWidth = column1.Max(s => s.Length); var formatString = string.Format("{{0, -{0}}}|", maxWidth); foreach (var s in column1) { Console.Write(formatString, s); // тут наверное остальные колонки Console.WriteLine(); }

Ответ 2



Можно написать вспомогательный метод-расширения: public static class StringHelper { public static string Shorten(this string str, int value) { return value > 3 && str.Length > value ? str.Substring(0, value - 3) + "..." : str; } } который будет добавлять многоточие, если длина строки больше, чем value. Пример использования: Console.Write("{0, -20} ", text.Shorten(20));

Ответ 3



Решил проблему таким образом: if (element.Value.Length >= 20) { Console.Write("{0, -20}|", element.Value.Substring(0, 17) + "..."); } else { Console.Write("{0, -20}|", element.Value); } Спасибо @Ev_Hyper за помощь!

Комментариев нет:

Отправить комментарий