Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Малыхина. Массивы....doc
Скачиваний:
22
Добавлен:
22.05.2015
Размер:
502.27 Кб
Скачать

11.5 Форматирование строк

В предыдущих темах для вывода информации о результатах работы программы использовались наиболее простые преобразования данных. Например, такое:

Console.Write(" " + x[i]),

где элемент числового массива в результате неявного преобразования в строковый тип и объединения со строкой из двух пробелов выводится на экран.

А оператор

Console.WriteLine ( "х={0} у={1} s={2}", х, у, s);

использует форматный вывод. При этом оператор вывода содержит более одного параметра. Первым па­раметром методу передается строковый литерал, содержащий помимо обычных символов, предназначенных для вывода на консоль, параметры в фигурных скоб­ках.

Параметры нумеруются с нуля, перед выводом они заменяются значениями со­ответствующих переменных в списке вывода: нулевой параметр заменяется значением первой переменной (в данном примере – х), первый параметр–второй переменной (в данном примере–у), второй параметр–значением переменнойs.

После номера параметра можно задать минимальную ширину поля вывода, а также указать спецификатор формата, который определяет форму представления выводимого значения.

В общем виде формат задается следующим образом:

{n[,m[:спецификатор_формата[число]]}

Здесь n–номер параметра. Параметрmопределяет минимальную ширину поля, которое отводится под выводимое значение. Если выводимому числу достаточно меньшего количества позиций, неиспользуемые позиции заполняются пробелами. Если числу требуется больше позиций, параметр игнорируется.

Спецификатор формата (табл.11.4) используются для форматирования арифметических типов при их преобразовании в строковое представление.

Листинг 7

using System;

using System.Text;

namespace ConsoleApplication1

{ class Program

{ static void Main()

{ int k = 342;

double w=0.3456;

Console. WriteLine( k. ToString( "C" ) );

Console. WriteLine( k. ToString( "D" ) );

Console.WriteLine(k.ToString("e"));

Console. WriteLine( k. ToString( "G" ) );

Console. WriteLine( "{0,6:r}", w );

Console. WriteLine( "{0,6:0.##}", w );

}

}

}

Результат работы программы:

В последнем выводе используется пользовательский шаблон форматирования:после двоеточия задан вид выводимого значения посимвольно. Если указан знак #, на этом месте будет выведена цифра числа, если она не равна нулю. Если указан 0, будет выведена любая цифра, в том числе и 0.

Таблица 11.4 – Спецификаторы формата для строк

Спецификатор

Описание

С или с

Вывод значений в денежном формате. По умолчанию перед выводимым значением подставляется символ доллара ($). Непосредственно после спецификатора можно задать целое число, определяющее длину дробной части

D или d

Вывод целых значений. Непосредственно после спецификатора можно задать целое число, определяющее ширину поля вывода. Недостающие места заполняются нулями

Е или е

Вывод значений в экспоненциальном формате. Непосредственно после спецификатора можно задать целое число, определяющее длину дробной части. Минимальная длина порядка – 3 символа

F или f

Вывод значений с фиксированной точностью. Непосредственно после спецификатора можно задать целое число, определяющее длину дробной части

G или g

Формат общего вида. Применяется для вывода значений с фиксированной точностью или в экспоненциальном формате в зависимости от того, какой формат требует меньшего количества позиций. Для различных типов величин по умолчанию используется разная ширина вывода, например, для single - 7 позиций, для byte и sbyte - 3, для decimal – 29

N или n

Вывод значений в формате d, ddd, ddd. ddd..., то есть группы разрядов разделяются разделителями, соответствующими региональным настройкам. Непосредственно после спецификации можно задать целое число, определяющее длину дробной части

Р или р

Вывод числа в процентном формате (число, умноженное на 100, после которого выводится знак %)

Rилиr

Отмена округления числа при преобразовании в строку

X или х

Вывод значений в шестнадцатеричном формате

Пользовательский шаблон может также содержать текст, который в общем случае заключается в апострофы.