Сегодня поговорим о форматированном выводе, который позволит выводить информацию в правильном виде в консоль, а также форматировать строки внутри самой программы.
Один из часто встречающихся выводов в консоль которые мы видели, имел вид как в примере ниже:
1 2 3 4 |
string site = "nookery "; string str = "it's fun!"; Console.WriteLine(site + str); |
Но когда вы начнете работу с html кодом или с xml файлами которые содержат большое количество кода, такой подход будет не верный. Ну представьте себе вы получаете строку с текстом в 10-20 предложений, в котором вам необходимо вносить какие то изменения в разные места текста, числа или добавлять свой текст. Вам бы пришлось сделать что то подобное.
1 |
Console.WriteLine(htmlText + str+htmlText2+str); |
Помимо того, что это как минимум не эстетично, так еще и не практично. Есть еще и другой не мало важный фактор, к примеру вы имеете денежные суммы, при которых вам необходимо либо округлять в конечно выводе, который представлял в дальнейшем некий шаблон, при использовании которого у вас не получились суммы 10.67343 рублей, у нас ведь нет денежной единицы меньше чем копейка, но при расчетах программы возможно получить такой результат. Если вы сейчас да же не поняли к чему я виду разговор, обещаю вам что к концу статьи вы разберетесь в этом.
Возьмем за основы пример выше и попробуем его форматировать в шаблонный вид.
1 2 3 4 5 |
string site = "nookery "; string str = "it's fun!"; Console.WriteLine(site + str); Console.WriteLine("{0}{1}", site, str); |
Как мы видим, вывод программы не изменился, однако изменился код, что мы видим, у нас имеются два параметра и аргумента, которые передаются в свои параметры и выводятся в консоль. А теперь давайте возьмем второй пример и попробуем его изменить.
1 |
Console.WriteLine(htmlText + "{0}" + htmlText2 + "{0}", str); |
Видите как все просто, теперь у нас сформировался некий шаблон, при котором нам достаточно изменять значения переменной str, которое будет выводиться в нужных нам местах текста.
Такой подход можно применять не только для консоли, но и для строки в целом, если посмотрите пример ниже поймете как это можно сделать:
1 |
string text= string.Format(htmlText + "{0}" + htmlText2 + "{0}", str); |
Форматированный вывод позволяет настроить точность округления, рассмотрим примеры ниже:
1 2 3 4 5 6 7 |
Console.WriteLine("{0:0.000} {1:0.0000}", 1.23456, 1.23456); // 1,235 1,2346 //Вывод завершающих нулей Console.WriteLine("{0:0.000} {1:0.###}", 1.2, 1.2); // 1,200 1,2 //Добивание нулями слева Console.WriteLine("{0:D4}", 42); //0042 |
Пример который находиться ниже позволит, создать табличный вариант отображения информации в консоли, а также его выравнивание по краям:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//Разбиение на колонки и выравнивание по правому Console.WriteLine("{0,10}|\n{1,10}|", 12345, 123); //12345| // 123| //или левому краю Console.WriteLine("{0,-10}|\n{1,-10}|", 12345, 123); // 12345 | // 123 | //А также комбинации выравнивания и округления Console.WriteLine("{0,10:0.00}|\n{1,10:0.000}|", 1.45, 21.345); // 1,45| // 21,345| |
В последнем примере рассмотрим вариант форматировании времени и даты:
1 2 3 4 5 6 7 8 |
//Форматирование времени и даты Console.WriteLine("{0:hh:mm:ss}", DateTime.Now); // 06:01:54 // MM и mm — это Месяцы и минуты. Различаются только регистром. Console.WriteLine("{0:yy-MM-dd}", DateTime.Now); // 17-07-19 // Можно менять количество букв и порядок: Console.WriteLine("{0:d-MM-yyyy}", DateTime.Now); // 1-12-2014 |