Служебные последовательности и литералы




Нестандартные форматные строки

 

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

Цифра или ноль

Символ 0 (ноль) обозначает позицию, в которой выводится цифра или ноль. Если в разряде числа, обозначенном в форматной строке символом 0, находится цифра, то она включается в результат. В противном случае в этой позиции выводится ноль.

Пример 3.31:

using System;

class Test

{

public static void Main()

{

Console.WriteLine("{0:000}", 55);

Console.WriteLine("{0:000}", 1456);

}

}

В примере выводится следующий результат:

Цифра или пробел

Символ # (фунт) обозначает позицию, в которой выводится цифра или пробел. Он полностью аналогичен символу 0, за исключением того, что при отсутствии цифры разряд остается пустым.

Пример 3.32:

using System;

class Test

{

public static void Main()

{

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

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

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

}

}

В примере выводится следующий результат:

Десятичный разделитель

Символ. (точка), находящийся в форматной строке, определяет позицию десятичного разделителя в результате. Символ, используемый в качестве десятичного разделителя в отформатированной строке, определяется экземпляром NumberFormatInfo.

Пример 3.33:

using System;

class Test

{

public static void Main()

{

Console.WriteLine("{0:#####.000}", 75928.3);

Console.WriteLine("{0:##.000}", 1456.456456);

}

}

В примере выводится следующий результат:

75928.300

1456.456

Разделитель групп разрядов

Символ, (запятая) используется для разделения групп разрядов. Если запятая находится среди цифровых позиций слева от десятичного разделителя (если он есть), в строку вставляется разделитель групп разрядов. Символ, используемый в качестве разделителя групп в отформатированной строке, и количество разрядов, объединяемых в одну группу, определяется экземпляром NumberFormatInfo.

Пример 3.34:

using System;

class Test

{

public static void Main()

{

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

Console.WriteLine("{0:##,000.000}", 14563553.593993);

Console.WriteLine("{0:#,#.000}", 14563553.593993);

}

}

В примере выводится следующий результат:

2,555,634,323

14,563,553.594

14,563,553.594

Масштабный коэффициент

Символ, (запятая) также используется как признак масштабирования числа. В этом случае он ставится сразу же после точки или в конце форматной строки.

Для каждой запятой, находящейся в этой позиции, число перед форматированием делится на 1000.

Пример 3.35:

using System;

class Test

{

public static void Main()

{

Console.WriteLine("{0:000,.##}", 158847);

Console.WriteLine("{0:000,,,.###}", 1593833);

}

}

В примере выводится следующий результат:

158.85

000.002

Процентная запись

Символ % (процент) означает, что число должно выводиться в процентах. Перед форматированием число умножается на 100.

Пример 3.36:

using System;

class Test

{

public static void Main()

{

Console.WriteLine("{0:##.000%}", 0.89144);

Console.WriteLine("{0:00%}", 0.01285);

}

}

В примере выводится следующий результат:

89.144%

01%

Экспоненциальная запись

Если символы E+0, E-0, e+0 или e-0 находятся в форматной строке сразу же после символа # или 0, число форматируется в экспоненциальной записи. Количеств цифр в экспоненте определяется количеством символов 0 в спецификаторе экспоненты. Символ E или e копируется прямо в отформатированную строку. Символ «+» означает, что в данной позиции выводится плюс или минус, а символ «-» говорит о том, что в данной позиции выводится только минус для отрицательных чисел.

Пример 3.37:

using System;

class Test

{

public static void Main()

{

Console.WriteLine("{0:###.000E-00}", 3.1415533E+04);

Console.WriteLine("{0:#.0000000E+000}", 2.553939939E+101);

}

}

В примере выводится следующий результат:

314.155E-02

2.5539399E+101

Разделитель секций

Символ; (точка с запятой) разделяет секции форматной строки, используемые для форматирования числа в зависимости от того, является ли оно положительным, равным нулю или отрицательным. Если форматная строка состоит только из двух секций, первая секция относится к положительным и нулевым значениям, а вторая – к отрицательным значениям. Если строка состоит из трех секций, они относятся соответственно к положительным, нулевым и отрицательным значениям.

Пример 3.38:

using System;

class Test

{

public static void Main()

{

Console.WriteLine("{0:###.00;(###.00);0}", -456.55);

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

Console.WriteLine("{0:###.00;(###.00);0}", 456.55);

}

}

В примере выводится следующий результат:

(.00)

456.55

Служебные последовательности и литералы

Символ \(обратная косая черта) ставится перед теми символами, которые не должны интерпретироваться как символы форматирования. Поскольку символ \ уже обладает самостоятельным значением в литералах C#, в таких строках проще использовать признак неинтерпретируемого синтаксиса @; в противном случае один символ \ в выходной строке генерируется при помощи двух символов \\.

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

Пример 3.39:

using System;

class Test

{

public static void Main()

{

Console.WriteLine("{0:###\\#}", 255);

Console.WriteLine(@"{0:###\#}", 255);

Console.WriteLine("{0:###'#0%;'}", 1456);

}

}

В примере выводится следующий результат:

255#

255#

1456#0%;



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-11-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: