Formatter Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Интерпретатор для строк форматирования в стиле printf.
[Android.Runtime.Register("java/util/Formatter", DoNotGenerateAcw=true)]
public sealed class Formatter : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ICloseable, Java.IO.IFlushable
[<Android.Runtime.Register("java/util/Formatter", DoNotGenerateAcw=true)>]
type Formatter = class
inherit Object
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IFlushable
- Наследование
- Атрибуты
- Реализации
Комментарии
Интерпретатор для строк форматирования в стиле printf. Этот класс обеспечивает поддержку обоснования макета и выравнивания, распространенных форматов для числовых, строковых данных и данных даты и времени, а также выходных данных языкового стандарта. Распространенные типы Java, такие как byte
, java.math.BigDecimal BigDecimal
и Calendar
поддерживаются. Настройка ограниченного форматирования для произвольных типов пользователей предоставляется через Formattable
интерфейс.
Форматировщики не обязательно безопасны для многопоточного доступа. Безопасность потоков является необязательной и несет ответственность за пользователей методов в этом классе.
Форматированная печать для языка Java сильно вдохновляется C printf
. Хотя строки формата похожи на C, некоторые настройки были сделаны для размещения языка Java и использования некоторых его функций. Кроме того, форматирование Java является более строгим, чем C; Например, если преобразование несовместимо с флагом, создается исключение. В неприменимых флагах C автоматически игнорируются. Таким образом, строки формата предназначены для того, чтобы быть распознаваемыми программистами C, но не обязательно полностью совместимы с этими в C.
Примеры ожидаемого использования:
<blockquote>
StringBuilder sb = new StringBuilder();
// Send all output to the Appendable object sb
Formatter formatter = new Formatter(sb, Locale.US);
// Explicit argument indices may be used to re-order output.
formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
// -> " d c b a"
// Optional locale as the first argument can be used to get
// locale-specific formatting of numbers. The precision and width can be
// given to round and align the value.
formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E);
// -> "e = +2,7183"
// The '(' numeric flag may be used to format negative numbers with
// parentheses rather than a minus sign. Group separators are
// automatically inserted.
formatter.format("Amount gained or lost since last statement: $ %(,.2f",
balanceDelta);
// -> "Amount gained or lost since last statement: $ (6,217.58)"
</blockquote>
Удобные методы для распространенных запросов форматирования существуют, как показано в следующих вызовах:
<blockquote>
// Writes a formatted string to System.out.
System.out.format("Local time: %tT", Calendar.getInstance());
// -> "Local time: 13:34:18"
// Writes formatted output to System.err.
System.err.printf("Unable to open file '%1$s': %2$s",
fileName, exception.getMessage());
// -> "Unable to open file 'food': No such file or directory"
</blockquote>
Как и sprintf(3)
в C, строки могут быть отформатированы с помощью статического метода String#format(String,Object...) String.format
:
<blockquote>
// Format a string containing a date.
import java.util.Calendar;
import java.util.GregorianCalendar;
import static java.util.Calendar.*;
Calendar c = new GregorianCalendar(1995, MAY, 23);
String s = String.format("Duke's Birthday: %1$tb %1$te, %1$tY", c);
// -> s == "Duke's Birthday: May 23, 1995"
</blockquote>
<h3>"org">Organization</h3>
Эта спецификация разделена на два раздела. Первый раздел, сводка, охватывает основные понятия форматирования. Этот раздел предназначен для пользователей, которые хотят быстро приступить к работе и знакомы с форматированным печатью на других языках программирования. Во втором разделе подробно рассматриваются сведения о реализации. Он предназначен для пользователей, которые хотят более точной спецификации поведения форматирования.
<h3>"summary">Summary</h3>
Этот раздел предназначен для краткого обзора концепций форматирования. Подробные сведения о поведении см. в разделе "Сведения".
<h4>"синтаксис">Формат синтаксиса строки</h4>
Для каждого метода, создающего форматированные выходные данные, требуется строка формата и список аргументов. Строка формата — это строка, которая может содержать фиксированный String
текст и один или несколько внедренных описателей формата. Рассмотрим следующий пример:
<blockquote>
Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
</blockquote>
Эта строка формата является первым аргументом format
метода. Он содержит три описателя формата "", "%1$tm
%1$te
" и "%1$tY
", которые указывают, как должны обрабатываться аргументы и где они должны быть вставлены в текст. Остальные части строки форматирования являются фиксированным текстом, включая "Dukes Birthday: "
и другие пробелы или знаки препинания.
Список аргументов состоит из всех аргументов, переданных методу после строки форматирования. В приведенном выше примере список аргументов имеет размер один и состоит из java.util.Calendar Calendar
объекта c
.
<ul>
<li> Описатели формата для общих, символьных и числовых типов имеют следующий синтаксис:
<blockquote>
%[argument_index$][flags][width][.precision]conversion
</blockquote>
Необязательный argument_index представляет собой десятичное целое число, указывающее положение аргумента в списке аргументов. Первый аргумент ссылается на "1$
", второй по "2$
" и т. д.
Необязательные флаги — это набор символов , изменяющих формат выходных данных. Набор допустимых флагов зависит от преобразования.
Необязательный ширины — положительное десятичное целое число, указывающее минимальное число символов, записываемых в выходные данные.
Необязательная точность — это неотрицательное целое число, обычно используемое для ограничения количества символов. Конкретное поведение зависит от преобразования.
Необходимое преобразование — это символ, указывающий, как должен быть отформатирован аргумент. Набор допустимых преобразований для заданного аргумента зависит от типа данных аргумента.
<li> Описатели формата для типов, которые используются для представления дат и времени, имеют следующий синтаксис:
<blockquote>
%[argument_index$][flags][width]conversion
</blockquote>
Необязательные argument_index, флаги и ширина определяются как описано выше.
Необходимое преобразование представляет собой две символьные последовательности. Первый символ — 't'
или 'T'
. Второй символ указывает используемый формат. Эти символы похожи, но не полностью идентичны тем, которые определены GNU date
и POSIX strftime(3c)
.
<li> Описатели формата, которые не соответствуют аргументам, имеют следующий синтаксис:
<blockquote>
%[flags][width]conversion
</blockquote>
Необязательные флаги и ширина определяются как описано выше.
Необходимое преобразование — это символ, указывающий на то, что содержимое будет вставлено в выходные данные.
</ul>
<Преобразования <h4> /h4>
Преобразования делятся на следующие категории:
<Пр>
<li><b>General</b> — может применяться к любому типу аргумента
<li><b>Character</b> — может применяться к основным типам, которые представляют символы Юникода: char
, , Character
, short
byte
Byte
и .Short
Это преобразование также может применяться к типам int
и Integer
при Character#isValidCodePoint
возврате<true
li<>b>Numeric</b>
<Пр>
<li><b Целочисленный</b>> - может применяться к целочисленным типам Java: byte
, Byte
, short
, int
Short
и Integer
long
, Long
и java.math.BigInteger BigInteger
(но не)Character
char
<li><b>Floating Point</b> — может применяться к типам с плавающей запятой Java: float
, , Float
, double
Double
и java.math.BigDecimal BigDecimal
</ol>
<li><b>Date/Time</b> — может применяться к типам Java, которые могут кодировать дату или время: long
, Long
, Calendar
Date
и TemporalAccessor TemporalAccessor
<li><b>Percent</b> — создает литерал '%'
('\u0025'
)
<li><b>Line Separator</b> — создает разделитель линий для конкретной платформы
</Пр>
Для преобразования категории "Общие", "Символ", "Числовой", "Целочисленный" и "Целочисленный", если не указано иное, если аргумент arg не заданnull
, результатом является "null
".
В следующей таблице перечислены поддерживаемые преобразования. Преобразования, обозначаемые символом верхнего регистра (т. е. 'B'
'X'
'E'
'S'
'H'
'G'
'A'
'C'
, и 'T'
) совпадают с соответствующими символами преобразования нижнего регистра, за исключением того, что результат преобразуется в верхний регистр в соответствии с правилами преобладающего.java.util.Locale Locale
Если явного языкового стандарта нет, либо в построении экземпляра, либо в качестве параметра для вызова метода, java.util.Locale.Category#FORMAT default locale
используется.
<table class="striped"><caption style="display:none">genConv</caption><thead><tr><th scope="col" style="vertical-align:bottom"> Conversion <th scope="col" style="vertical-align:bottom" Argument <Category th scope="col" style="vertical-align:bottom>"> Description </thead><tbody><tr><th scope="row style="vertical-align:top"'b'
>, 'B'
<td style="vertical-align:top" > общий <td>, если аргумент arg имеет null
значение, результатом является "false
". Если arg является boolean
или Boolean
, результатом является строка, возвращаемая String#valueOf(boolean) String.valueOf(arg)
. В противном случае результат имеет значение true.
<tr><th scope="row" style="vertical-align:top"'h'
>, 'H'
<td style="vertical-align:top"> general <td> Результат получается путем Integer.toHexString(arg.hashCode())
вызова.
<tr><th scope="row" style="vertical-align:top"'s'
>,<'S'
td style="vertical-align:top"> general <td> If arg реализуетFormattable
, а затем Formattable#formatTo arg.formatTo
вызывается. В противном случае результат получается путем arg.toString()
вызова.
<tr><th scope="row" style="vertical-align:top">'c'
,<'C'
td style="vertical-align:top"> символ td> Результат является символом <Юникода
<tr><th scope="row" style="vertical-align:top"><'d'
td style="vertical-align:top"> целочисленный <> результат форматируется как десятичное целое число
<tr><th scope="row" style="vertical-align:top"><'o'
td style="vertical-align:top"> целочисленный <> результат форматируется как восьмеричное целое число
<tr><th scope="row" style="vertical-align:top">'x'
,<'X'
td style="vertical-align:top"> целочисленный <> результат форматируется как шестнадцатеричное целое число
<tr><th scope="row" style="вертикальный выравнивание:top"'e'
>,<'E'
td style="вертикальный выравнивание:top"> с плавающей запятой <td> Результат форматируется как десятичное число в компьютеризированной научной нотации
<tr><th scope="row" style="vertical-align:top"td style="'f'
<>vertical-align:top"> float point <td> Результат форматируется как десятичное число
<tr><th scope="row" style="вертикальный выравнивание:top">'g'
,<'G'
td style="вертикальный выравнивание:top"> с плавающей запятой <> td Результат форматируется с помощью компьютеризованной научной нотации или десятичного формата, в зависимости от точности и значения после округления.
<tr><th scope="row" style="vertical-align:top">'a'
, 'A'
<td style="vertical-align:top"> floating point <td> Результат форматируется как шестнадцатеричное число с плавающей запятой и экспонент. Это преобразование не>< поддерживается>< для BigDecimal
типа, несмотря на то, что последний находится в категории аргументов с плавающей запятой.
<tr><th scope="row" style="vertical-align:top">'t'
, 'T'
<td style="vertical-align:top"> date/time <td> Prefix для символов преобразования даты и времени. См. статью "Преобразования даты и времени".
<tr><th scope="row" style="vertical-align:top">'%'
<td style="vertical-align:top"> percent><is a literal '%'
()'\u0025'
<tr><th scope="row" style="vertical-align:top"><'n'
td style="vertical-align:top"> line separator td> The result is the platform-specific line separator <
</tbody></table>
Любые символы, не определенные явным образом как преобразования, являются незаконными и зарезервированы для будущих расширений.
<h4>"dt">Преобразование даты и времени</h4>
Для суффиксов преобразования даты и времени определяются 't'
следующие символы преобразования даты и 'T'
времени. Типы аналогичны, но не полностью идентичны тем, которые определены GNU date
и POSIX strftime(3c)
. Дополнительные типы преобразования предоставляются для доступа к функциям Java (например 'L'
, для миллисекунд в секунду).
Следующие символы преобразования используются для времени форматирования:
<table class="striped">caption style="display:none">time</caption><tbody><tr><th scope="row" style="vertical-align:top"'H'
<>td> Hour of day for the 24-hour clock, отформатированный как две цифры с начальным нулем по мере необходимости. 00 - 23
<
<tr><th scope="row" style="vertical-align:top"><'I'
td> Hour for the 12-часовой часы, отформатированный как две цифры с начальным нулем по мере необходимости. 01 - 12
<tr><th scope="row" style="vertical-align:top"><'k'
td> Hour of the day for the 24-hour clock, т. е. 0 - 23
<tr><th scope="row" style="vertical-align:top"><'l'
td> Hour for the 12-hour clock, т. е. 1 - 12
<tr><th scope="row" style="vertical-align:top"><'M'
td> Minute в течение часа отформатировано как две цифры с начальным нулем по мере необходимости, т. е. 00 - 59
<tr><th scope="row" style="vertical-align:top"'S'
<>td> Seconds в течение минуты, отформатированный как две цифры с начальным нулем по мере необходимости, т. е. 00 - 60
("60
" является специальным значением, необходимым для поддержки секунд прыжка).
<tr><th scope="row" style="vertical-align:top"><'L'
td> Millisecond в втором формате в виде трех цифр с начальными нулями по мере необходимости. 000 - 999
<tr><th scope="row" style="vertical-align:top"><'N'
td> Nanosecond в пределах второй, отформатированный как девять цифр с начальными нулями при необходимости. 000000000 - 999999999
<tr><th scope="row" style="vertical-align:top"><'p'
td> Locale-specific java.text.DateFormatSymbols#getAmPmStrings morning or afternoon маркер в нижнем регистре, например""am
или "pm
". Использование префикса 'T'
преобразования заставляет выходные данные в верхний регистр.
<tr><th scope="row" style="vertical-align:top">'z'
<td>RFC 822 style numeric time zone offset from GMT, например. -0800
Это значение будет скорректировано по мере необходимости для летнего времени. Для long
этого Long
Date
экземпляра виртуальной машины Java используется часовой пояс по умолчанию TimeZone#getDefault().
<tr><th scope="row" style="vertical-align:top"<>'Z'
td> A string, представляющий аббревиацию часового пояса. Это значение будет скорректировано по мере необходимости для летнего времени. Для long
этого Long
Date
экземпляра виртуальной машины Java используется часовой пояс по умолчанию TimeZone#getDefault(). Языковой стандарт Formatter заменяет языковой стандарт аргумента (если таковой есть).
<tr><th scope="row" style="vertical-align:top"'s'
><td> Seconds с начала эпохи начиная с 1 января 1970 00:00:00
UTC, т. е. Long.MIN_VALUE/1000
Long.MAX_VALUE/1000
<tr><th scope="row" style="vertical-align:top"><'Q'
td> Milliseconds с начала эпохи, начиная с 1 января 1970 00:00:00
UTC, т. е. Long.MIN_VALUE
Long.MAX_VALUE
</tbody></table>
Для форматирования дат используются следующие символы преобразования:
<table class="striped"><caption style="display:none">date</caption><tbody>
<tr><th scope="row" style="vertical-align:top"'B'
<>td> Locale-specific java.text.DateFormatSymbols#getMonths full month name, например "January"
, . "February"
<tr><th scope="row" style="vertical-align:top"'b'
<>td> Locale-specific java.text.DateFormatSymbols#getShortMonths сокращенное имя месяца, например "Jan"
, . "Feb"
<tr><th scope="row" style="vertical-align:top"><'h'
td> То же самое.'b'
<tr><th scope="row" style="vertical-align:top"<'A'
>td> Locale-specific name of the java.text.DateFormatSymbols#getWeekdays day of the week, Например"Sunday"
, "Monday"
<tr><th scope="row" style="vertical-align:top"'a'
><td> Locale-specific name of the java.text.DateFormatSymbols#getShortWeekdays day of the week, например "Sun"
"Mon"
<, tr><th scope="row" style="vertical-align:top"'C'
<>td> Four-digit year разделен на год, разделенный на 100
, отформатированный как две цифры с начальным нулем по мере необходимости, т. 00 - 99
tr th scope="row" style="vertical-align:top">'Y'
<td> Year, отформатированный как минимум четыре цифры с начальными нулями по мере необходимости, например 0092
равно 92
CE для григорианского календаря.><<
<tr><th scope="row" style="vertical-align:top"><'y'
td> Последние две цифры года, отформатированные с начальными нулями по мере необходимости. 00 - 99
<tr><th scope="row" style="vertical-align:top"><'j'
td> Day of year, отформатированный как три цифры с начальными нулями по мере необходимости, например 001 - 366
для григорианского календаря.
<tr><th scope="row" style="vertical-align:top"><'m'
td> Month, отформатированный как две цифры с начальными нулями по мере необходимости. 01 - 13
<tr th scope="row" style="vertical-align:top"'d'
><td> Day of month, форматированный как две цифры с начальными нулями по мере необходимости, т. е. 01 - 31
<tr><><th scope="row" style="vertical-align:top"'e'
<>td> Day of month, отформатированный как две цифры, т. е. 1 - 31
</tbody></table>
Следующие символы преобразования используются для форматирования общих композиций даты и времени.
<table class="striped"><caption style="display:none">composites</caption><tbody>
<tr th scope="row" style="vertical-align:top"'R'
<>td> Time formatted for the 24-hour clock as<"%tH:%tM"
tr><><th scope="row" style="vertical-align:top"'T'
<>td> Time formated for the 24-hour clock as."%tH:%tM:%tS"
<tr><th scope="row" style="vertical-align:top"><'r'
td> Time formatted для 12-часовых часов как ."%tI:%tM:%tS %Tp"
Расположение маркера утром или днем ('%Tp'
) может зависеть от языкового стандарта.
<tr><th scope="row" style="vertical-align:top"><'D'
td> Date formatted as ."%tm/%td/%ty"
<tr><th scope="row" style="vertical-align:top">'F'
<td>ISO 8601 complete date formatted as ."%tY-%tm-%td"
<tr><th scope="row" style="vertical-align:top"'c'
<>td> Date and time formatted as "%ta %tb %td %tT %tZ %tY"
, например. "Sun Jul 20 16:17:00 EDT 1969"
</tbody></table>
Любые символы, которые явно не определены как суффиксы преобразования даты и времени, являются незаконными и зарезервированы для будущих расширений.
<Флаги <h4> /h4>
В следующей таблице перечислены поддерживаемые флаги. y означает, что флаг поддерживается для указанных типов аргументов.
<table class="striped"><caption style="display:none">genConv</caption><thead><tr><th scope="col" style="vertical-align:bottom"> Flag <th scope="col" style="vertical-align:bottom"> General <th scope="col" style="vertical-align:bottom"> Character <th scope="col" style="vertical-align:bottom"> Integral <th scope="col" style="vertical-align:bottom"> Floating Point <th scope="col" style=" вертикальное выравнивание:bottom"> Date/Time <th scope="col" style="vertical-align:bottom"> Description </thead><tbody><tr><th scope="row"> '-' <td style="text-align:center; вертикальное выравнивание:top"> y td style="text-align:center; вертикальный выравнивание:top"> y <<td style="text-align:center; вертикальный выравнивание:top"> y <td style="text-align:center; вертикальный выравнивание:top"><y td style="text-align:center; вертикальное выравнивание:top"> y <td> Результат будет оправдан левым.
<tr><th scope="row" '#' <> td style="text-align:center; вертикальное выравнивание:top"> y<sup>1</sup<>td style="text-align:center; вертикальный выравнивание:top"> - <td style="text-align:center; vertical-align:top"> y<sup>3</sup><td style="text-align:center; vertical-align:top"> y <td style="text-align:center; vertical-align:top"> - <td> Результат должен использовать результат, зависящий от преобразования, альтернативной формы
<tr><th scope="row" '+' <> td style="text-align:center; вертикальное выравнивание:top"> - <td style="text-align:center; вертикальный выравнивание:top"> - <td style="text-align:center; вертикальный выравнивание:top"> y<sup>4</sup><td style="text-align:center; вертикальный выравнивание:top"><y td style="text-align:center; вертикальный выравнивание:top"> - <td> Результат всегда будет содержать знак
<tr><th scope="row"> ' >' <td style="text-align:center; вертикальное выравнивание:top"> - td style="text-align:center; вертикальный выравнивание:top"> - <td style="text-align:center; vertical-align:top"> y<sup>4</sup><td style="text-align:center; вертикальный выравнивание:top"> y <td style="text-align:center; вертикальный выравнивание:top"> - <td> Результат будет включать в себя ведущее пространство для положительных <значений
<tr><th scope="row" '0' <> td style="text-align:center; вертикальное выравнивание:top"> - <td style="text-align:center; вертикальный выравнивание:top"> - <td style="text-align:center; вертикальный выравнивание:top">y <td style="text-align:center; вертикальный выравнивание:top"> y <td style="text-align:center; вертикальный выравнивание:top"> - <td> Результат будет нулевым сложен
<tr><th scope="row">, <td style="text-align:center; вертикальное выравнивание:top"> - <td style="text-align:center; вертикальный выравнивание:top"> - <td style="text-align:center; вертикальный выравнивание:top"> y<sup>2</sup<>td style="text-align:center; вертикальный выравнивание:top">y<sup>5</supd><style="text-align:center; вертикальный выравнивание:top"> - <td> В результате будут включены языковые параметры java.text.DecimalFormatSymbols#getGroupingSeparator группирующих разделителей tr th scope="row"> '(' <td style="text-align:center; вертикальный выравнивание:top"> - <td style="text-align:center; вертикальный выравнивание:top"> - <td style="text-align:center; вертикальный выравнивание:top"> y sup>4</sup<>td style="text-align:center; вертикальный выравнивание:top"> y<<sup>5</sup><td><< style="text-align:center"> — <td> Результат заключит отрицательные числа в скобки
</tbody></table>
<sup>1/sup> зависит от определения Formattable
<.
<sup>2</sup> Для 'd'
преобразования только.
<sup>3</sup> For 'o'
, 'x'
и 'X'
преобразования только.
<sup>4/sup> For'd'
, 'o'
, 'x'
и 'X'
преобразования, применяемые к, или 'd'
применены к java.math.BigInteger BigInteger
byte
, , Byte
, int
Short
short
и , long
и Integer
Long
.<
<sup>5</sup> For 'e'
, 'E'
, 'f'
, 'g'
и 'G'
преобразования только.
Все символы, не определенные явным образом как флаги, являются незаконными и зарезервированы для будущих расширений.
<Ширина <h4 /h4>>
Ширина — это минимальное количество символов, записываемых в выходные данные. Для преобразования разделителя строк ширина не применима; Если он указан, создается исключение.
<точность h4 /h4><>
Для общих типов аргументов точность — максимальное число символов, записываемых в выходные данные.
Для преобразования 'a'
с плавающей запятой , 'A'
'e'
, 'E'
и 'f'
точность — это число цифр после радиксовой точки. Если преобразование равно 'g'
или 'G'
, то точность — общее количество цифр в результирующей величине после округления.
Для типов аргументов символа, целочисленного и даты и времени и преобразования разделителя строк точность не применяется; Если указана точность, создается исключение.
<Индекс <аргументов h4> /h4>
Индекс аргумента — это десятичное целое число, указывающее положение аргумента в списке аргументов. Первый аргумент ссылается на "1$
", второй по "2$
" и т. д.
Другим способом ссылки на аргументы по позиции является использование '<'
флага ('\u003c'
), что приводит к повторному использованию аргумента для предыдущего описателя формата. Например, следующие две инструкции будут создавать одинаковые строки:
<blockquote>
Calendar c = ...;
String s1 = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
String s2 = String.format("Duke's Birthday: %1$tm %<te,%<tY", c);
</blockquote>
<hr><h3>"details">Details</h3>
Этот раздел предназначен для предоставления сведений о поведении для форматирования, включая условия и исключения, поддерживаемые типы данных, локализацию и взаимодействие между флагами, преобразованиями и типами данных. Общие сведения о принципах форматирования см. в сводке
Любые символы, не явно определенные как преобразования, суффиксы преобразования даты и времени или флаги являются незаконными и зарезервированы для будущих расширений. Использование такого символа в строке формата приведет UnknownFormatConversionException
к возникновению или UnknownFormatFlagsException
возникновению.
Если описатель формата содержит ширину или точность с недопустимым значением или значением, которое в противном случае не поддерживается, IllegalFormatWidthException
создается или IllegalFormatPrecisionException
соответственно.
Если описатель формата содержит символ преобразования, который не применим к соответствующему аргументу, IllegalFormatConversionException
будет создано исключение.
Все указанные исключения могут быть вызваны любым format
из методов Formatter
, а также любыми format
удобными методами, такими как String#format(String,Object...) String.format
и java.io.PrintStream#printf(String,Object...) PrintStream.printf
.
Для преобразования категории "Общие", "Символ", "Числовой", "Целочисленный" и "Целочисленный", если не указано иное, если аргумент arg не заданnull
, результатом является "null
".
Преобразования, обозначаемые символом верхнего регистра (т. е. 'B'
'X'
'E'
'S'
'H'
'G'
'A'
'C'
, и 'T'
) совпадают с соответствующими символами преобразования нижнего регистра, за исключением того, что результат преобразуется в верхний регистр в соответствии с правилами преобладающего.java.util.Locale Locale
Если явного языкового стандарта нет, либо в построении экземпляра, либо в качестве параметра для вызова метода, java.util.Locale.Category#FORMAT default locale
используется.
<h4>"dgen">General</h4>
К любому типу аргумента могут применяться следующие общие преобразования:
<table class="striped"caption style="display:none">><dgConv</caption><tbody>
<tr><th scope="row" style="vertical-align:top"<'b'
>td style="vertical-align:top"><'\u0062'
td> Produces либо "true
" или "false
, как возвращается.Boolean#toString(boolean)
Если аргумент имеет значение null
, результатом является "false
". Если аргумент является или Boolean
, результатом является boolean
строка, возвращаемаяString#valueOf(boolean) String.valueOf()
. В противном случае результатом является "true
".
'#'
Если флаг задан, FormatFlagsConversionMismatchException
будет создано исключение.
<tr><th scope="row" style="vertical-align:top"'B'
><td style="vertical-align:top"'\u0042'
<>td>"the upper-case variant 'b'
of .
<tr><th scope="row" style="vertical-align:top">'h'
<td style="vertical-align:top"'\u0068'
><td> Создает строку, представляющую значение хэш-кода объекта.
Результат получается путем Integer.toHexString(arg.hashCode())
вызова.
'#'
Если флаг задан, FormatFlagsConversionMismatchException
будет создано исключение.
<tr><th scope="row" style="vertical-align:top"'H'
><td style="vertical-align:top"'\u0048'
<>td>"the upper-case variant 'h'
of .
<tr><th scope="row" style="vertical-align:top">'s'
<td style="vertical-align:top"'\u0073'
><td> Produces a string.
Если аргумент реализует Formattable
, вызывается его Formattable#formatTo formatTo
метод. В противном случае результат получается путем вызова метода аргумента toString()
.
'#'
Если флаг задан и аргумент не является аргументом Formattable
, FormatFlagsConversionMismatchException
то будет создано исключение.
<tr><th scope="row" style="vertical-align:top"'S'
><td style="vertical-align:top"'\u0053'
<>td>"the upper-case variant 's'
of .
</tbody></table>
Следующие флаги dFlags> применяются к общим преобразованиям:
<table class="striped"><caption style="display:none">dFlags</caption><tbody>
<tr><th scope="row" style="vertical-align:top">'-'
<td style="vertical-align:top"'\u002d'
><td> Left оправдывает выходные данные. Пробелы ('\u0020'
) будут добавлены в конце преобразованного значения, как необходимо для заполнения минимальной ширины поля. Если ширина не указана, MissingFormatWidthException
создается исключение. Если этот флаг не указан, выходные данные будут оправданы правильно.
<tr><th scope="row" style="vertical-align:top">'#'
<td style="vertical-align:top"'\u0023'
><td> Требуется, чтобы выходные данные использовали альтернативную форму. Определение формы указывается преобразованием.
</tbody></table>
Ширина genWidth> — это минимальное число символов, записываемых в выходные данные. Если длина преобразованного значения меньше ширины, выходные данные будут заполнены ' '
('\u0020'
) до тех пор, пока общее число символов не равно ширине. По умолчанию заполнение находится слева. '-'
Если флаг задан, то заполнение будет справа. Если ширина не указана, не существует минимального значения.
Точность — это максимальное число символов, записываемых в выходные данные. Точность применяется до ширины, поэтому выходные данные будут усечены до precision
символов, даже если ширина больше точности. Если точность не указана, то нет явного ограничения на количество символов.
<h4>"dchar">Character</h4>
Это преобразование может применяться к char
и Character
. Он также может применяться к типамbyte
, Byte
short
и Short
при Character#isValidCodePoint
int
Integer
возврате.true
Если возвращается, false
IllegalFormatCodePointException
создается исключение.
<table class="striped"caption style="display:none">><charConv</caption><tbody>
<tr><th scope="row" style="vertical-align:top">'c'
<td style="vertical-align:top"'\u0063'
><td> Форматирует аргумент в виде символа Юникода, как описано в представлении символов Юникода. Это может быть несколько 16-разрядных char
в случае, когда аргумент представляет дополнительный символ.
'#'
Если флаг задан, FormatFlagsConversionMismatchException
будет создано исключение.
<tr><th scope="row" style="vertical-align:top"'C'
><td style="vertical-align:top"'\u0043'
<>td>"the upper-case variant 'c'
of .
</tbody></table>
Применяется '-'
флаг, определенный для общих преобразований. '#'
Если флаг задан, FormatFlagsConversionMismatchException
будет создано исключение.
Ширина определяется как для общих преобразований.
Точность неприменима. Если указана IllegalFormatPrecisionException
точность, создается исключение.
<h4>"dnum">Numeric</h4>
Числовые преобразования делятся на следующие категории:
<Пр>
<li>b Byte, Short, Integer и Long</b><li><b>BigInteger</><b li><>b Float и Double</b><li<>b>BigDecimal</b></ol><>
Числовые типы будут отформатированы в соответствии со следующим алгоритмом:
<B>"L10nAlgorithm"> Алгоритм< локализации номеров/b>
После получения цифр для целочисленной части, дробной части и экспонента (в соответствии с типом данных) применяется следующее преобразование:
<Пр>
<li> Каждый символ цифры d в строке заменяется цифрой, вычисляемой для конкретного языкового стандарта относительно java.text текущего языкового стандарта.DecimalFormatSymbols#getZeroDigit() нулевой цифрыz; это d - '0'
>+> z.
<li> Если присутствует десятичный разделитель, замените разделитель десятичных разделителей java.text.DecimalFormatSymbols#getDecimalSeparator десятичным разделителем.
<li> Если ','
'\u002c'
задан флаг "L10nGroup">, то параметр java.text.DecimalFormatSymbols#getGroupingSeparator вставляется путем сканирования целочисленной части строки от наименее значимых до наиболее значимых цифр и вставки разделителя через интервалы, определенных java.text.decimalFormat#getGroupingSize().
<li> Если '0'
флаг задан, то символ символа знака, если он есть, и до первой ненулевой цифры, пока длина строки не равна запрошенной ширине поля.
<li> Если значение отрицательное, а '('
флаг задан, '('
'\u0028'
то добавляется () и добавляется (')'
'\u0029'
).
<li> , если значение отрицательное (или отрицательное значение с плавающей запятой отрицательного нуля) и '('
флаг не задан, то а '-'
('\u002d'
) предопределен.
<li> Если '+'
флаг задан и значение положительное или нулевое (или положительное значение с плавающей запятой), то будет '+'
предопределено значение ('\u002b'
).
</Пр>
Если значение равно NaN или положительное бесконечность, будут выводиться литеральные строки "NaN" или "Бесконечность" соответственно. Если значение равно отрицательному бесконечности, выходные данные будут "(Бесконечность)", если '('
флаг задан в противном случае выходные данные будут "-Бесконечность". Эти значения не локализованы.
"dnint"><b> Byte, Short, Integer и Long </b>
Следующие преобразования могут применяться к byte
, Byte
, , short
Short
int
и , а Integer
также long
Long
.
<table class="striped"caption style="display:none">><IntConv</caption><tbody>
<tr><th scope="row" style="vertical-align:top">'d'
<td style="vertical-align:top"'\u0064'
><td> Форматирует аргумент в виде десятичного целого числа. Применяется алгоритм локализации.
'0'
Если флаг задан, а значение отрицательное, после знака будет происходить нулевое заполнение.
'#'
Если флаг задан, FormatFlagsConversionMismatchException
будет создано исключение.
<tr><th scope="row" style="vertical-align:top">'o'
<td style="vertical-align:top"'\u006f'
><td> Форматирует аргумент в виде целого числа в базовой восьми. Локализация не применяется.
Если x является отрицательным, результат будет незначимым значением, созданным путем добавления 2<sup n</sup>> в значение, где n
число битов в типе, возвращаемое SIZE
статическим полем в байтах Byte#SIZE, Short#SIZE Short, Integer#SIZE Integer или Long#SIZE Long классы соответствующим образом.
Если флаг задан, выходные '#'
данные всегда начинаются с индикатора '0'
радикса.
'0'
Если флаг задан, выходные данные будут заполнены с нулями до ширины поля после любого указания знака.
If '('
, '+'
'> ', или ','
флаги задаются, после чего FormatFlagsConversionMismatchException
будет создано исключение.
<tr><th scope="row" style="vertical-align:top">'x'
<td style="vertical-align:top"'\u0078'
><td> Форматирует аргумент в виде целого числа в базовой шестнадцати. Локализация не применяется.
Если x является отрицательным, результат будет незначимым значением, созданным путем добавления 2<sup n</sup>> в значение, где n
число битов в типе, возвращаемое SIZE
статическим полем в байтах Byte#SIZE, Short#SIZE Short, Integer#SIZE Integer или Long#SIZE Long классы соответствующим образом.
Если флаг задан, выходные '#'
данные всегда начинаются с индикатора "0x"
радикса.
'0'
Если флаг задан, выходные данные будут заполнены на ширину поля с начальными нулями после индикатора радикса или знака (если присутствует).
' '
'+'
Если '('
заданы флаги или ','
флаги, FormatFlagsConversionMismatchException
то будет создано исключение.
<tr><th scope="row" style="vertical-align:top"'X'
><td style="vertical-align:top"'\u0058'
<>td>"the upper-case variant 'x'
of . Вся строка, представляющая число, будет преобразована в верхний регистр String#toUpperCase, включая 'x'
(если таковой) и все шестнадцатеричные цифры'f'
- 'a'
().'\u0061'
- '\u0066'
</tbody></table>
Если преобразование равно , или и флаги, и '#'
'0'
флаги даны, результат будет содержать индикатор радикса ('0'
для восьмерий и "0x"
для "0X"
шестнадцатеричных), некоторое число нулей (на основе ширины) и значение.'X'
'x'
'o'
'-'
Если флаг не задан, перед знаком будет происходить заполнение пробела.
Следующие флаги intFlags> применяются к числовым целочисленным преобразованиям:
<table class="striped"caption style="display:none">><intFlags</caption><tbody>
<tr><th scope="row" style="vertical-align:top">'+'
<td style="vertical-align:top"'\u002b'
><td> Требуется, чтобы выходные данные включали положительный знак для всех положительных чисел. Если этот флаг не задан, то только отрицательные значения будут включать знак.
Если заданы IllegalFormatFlagsException
оба '+'
флага, ' '
будет создано исключение.
<tr><th scope="row" style="vertical-align:top"' '
><td style="vertical-align:top"'\u0020'
<>td> Требует, чтобы выходные данные включали одно дополнительное пространство ('\u0020'
) для неотрицательных значений.
Если заданы IllegalFormatFlagsException
оба '+'
флага, ' '
будет создано исключение.
<tr><th scope="row" style="vertical-align:top">'0'
<td style="вертикальный выравнивание:top"'\u0030'
><td> Требуется заполнение выходных данных с помощью ведущих java.text.DecimalFormatSymbols#getZeroDigit нулевой ширины поля после любого знака или радикс индикатора, за исключением преобразования NaN или бесконечности. Если ширина не указана, MissingFormatWidthException
создается исключение.
Если заданы IllegalFormatFlagsException
оба '-'
флага, '0'
будет создано исключение.
<tr><th scope="row" style="vertical-align:top">','
<td style="vertical-align:top"'\u002c'
><td> Требует выходные данные для включения языкового стандарта java.text.DecimalFormatSymbols#getGroupingSeparator group, как описано в разделе "группа" алгоритма локализации.
<tr><th scope="row" style="vertical-align:top"<>'('
td style="vertical-align:top">'\u0028'
<td> Требует выходные данные для подготовки ('\u0028'
'('
) и добавления (')'
'\u0029'
) к отрицательным значениям.
</tbody></table>
Если флаги intdFlags> не заданы в формате по умолчанию, как показано ниже.
<ul>
<li> Выходные данные оправданы правым значением в<width
отрицательных числах li> начинаются с ('-'
'\u002d'
)
<li> Положительные числа и ноль не включают знак или дополнительное начальное пространство
<li> Нет разделителей группирования
</ul>
Ширина intWidth> — это минимальное количество символов, записываемых в выходные данные. Сюда входят все знаки, цифры, разделители группировки, индикатор радикса и скобки. Если длина преобразованного значения меньше ширины, выходные данные будут заполнены пробелами ('\u0020'
), пока общее число символов не равно ширине. По умолчанию заполнение находится слева. Если '-'
флаг задан, то заполнение будет справа. Если ширина не указана, не существует минимального значения.
Точность неприменима. Если задана точность, IllegalFormatPrecisionException
создается исключение.
"dnbint"><b> BigInteger </b>
К следующим преобразованиям можно применить java.math.BigInteger
.
<table class="striped"caption style="display:none">><bIntConv</caption><tbody>
<tr><th scope="row" style="vertical-align:top">'d'
<td style="vertical-align:top"'\u0064'
><td>" требует форматирования выходных данных в виде десятичного целого числа. Применяется алгоритм локализации.
'#'
Если флаг заданFormatFlagsConversionMismatchException
, будет создан.
<tr><th scope="row" style="vertical-align:top">'o'
<td style="vertical-align:top"'\u006f'
><td>" требует форматирования выходных данных в виде целого числа в базовой восьми. Локализация не применяется.
Если x является отрицательным, результат будет подписанным значением, начиная с '-'
('\u002d'
). Подписанные выходные данные разрешены для этого типа, так как в отличие от примитивных типов невозможно создать неподписанный эквивалент, не предполагая явный размер типа данных.
Если x является положительным или нулевым, а '+'
флаг задан, результат начинается с '+'
('\u002b'
).
Если флаг задан, выходные '#'
данные всегда начинаются с '0'
префикса.
'0'
Если флаг задан, выходные данные будут заполнены с нулями до ширины поля после любого указания знака.
','
Если флаг задан, FormatFlagsConversionMismatchException
будет создано исключение.
<tr><th scope="row" style="vertical-align:top">'x'
<td style="vertical-align:top"td"'\u0078'
><td> Требует форматирования выходных данных в виде целого числа в базовой шестнадцати. Локализация не применяется.
Если x является отрицательным, результат будет подписанным значением, начиная с '-'
('\u002d'
). Подписанные выходные данные разрешены для этого типа, так как в отличие от примитивных типов невозможно создать неподписанный эквивалент, не предполагая явный размер типа данных.
Если x является положительным или нулевым, а '+'
флаг задан, результат начинается с '+'
('\u002b'
).
Если флаг задан, выходные '#'
данные всегда начинаются с индикатора "0x"
радикса.
'0'
Если флаг задан, выходные данные будут заполнены на ширину поля с начальными нулями после индикатора радикса или знака (если присутствует).
','
Если флаг задан, FormatFlagsConversionMismatchException
будет создано исключение.
<tr><th scope="row" style="vertical-align:top"'X'
><td style="vertical-align:top"'\u0058'
<>td>"the upper-case variant 'x'
of . Вся строка, представляющая число, будет преобразована в верхний регистр String#toUpperCase, включая 'x'
(если таковой) и все шестнадцатеричные цифры'f'
- 'a'
().'\u0061'
- '\u0066'
</tbody></table>
Если преобразование равно 'o'
, 'x'
или 'X'
и '#'
'0'
флаги заданы, результат будет содержать базовый индикатор ('0'
для восьмерий и "0x"
"0X"
для шестнадцатеричных), некоторое число нулей (на основе ширины) и значение.
'0'
Если флаг задан, а значение отрицательное, после знака будет происходить нулевое заполнение.
'-'
Если флаг не задан, перед знаком будет происходить заполнение пробела.
Все флаги, определенные для байтов, short, integer и Long, применяются. Поведение по умолчанию, если флаги не заданы, совпадают с байтами, short, integer и Long.
Спецификация ширины совпадает с спецификацией байтов, short, integer и long.
Точность неприменима. Если задана точность, IllegalFormatPrecisionException
создается исключение.
"dndec"><b> Float и Double</b>
Следующие преобразования могут применяться к float
, Float
double
и Double
.
<table class="striped"><caption style="display:none">floatConv</caption><tbody>
<tr><th scope="row" style="vertical-align:top"><'e'
td style="vertical-align:top"td>"'\u0065'
>< требует форматирования выходных данных с помощью "научной">компьютеризированной нотации. Применяется алгоритм локализации.
Форматирование величины m зависит от его значения.
Если значение m равно NaN или бесконечно, то будут выводиться литеральные строки "NaN" или "Бесконечность" соответственно. Эти значения не локализованы.
Если значение m равно положительному нулю или отрицательному нулю, то экспонент будет "+00"
.
В противном случае результатом является строка, представляющая знак и величину (абсолютное значение) аргумента. Форматирование знака описано в алгоритме локализации. Форматирование величины m зависит от его значения.
Пусть n будет уникальным целым числом, таким образом, что 10<sup>n</>sup <= m < 10<sup>n+1</sup>; затем позвольтебыть математически точным м и 10<sup n</sup>>, чтобы 1 <= <'e'
), за которым следует знак экспонента, за которым следует представление n в виде десятичного целого числа, как создается методомLong#toString(long, int)
, и отсчитывается от нуля, чтобы включить по крайней мере две цифры.
Число цифр в результате дробной части m или равно точности. Если точность не указана, значение по умолчанию равно 6
. Если точность меньше числа цифр, которые будут отображаться после десятичной запятой в строке, возвращаемой Float#toString(float)
или Double#toString(double)
соответственно, значение будет округляться с помощью алгоритма java.math.RoundingMode#HALF_UP округления половины. В противном случае можно добавить нули, чтобы достичь точности. Для канонического представления значения используйте Float#toString(float)
или Double#toString(double)
соответствующим образом.
','
Если флаг задан, FormatFlagsConversionMismatchException
будет создано исключение.
<tr><th scope="row" style="vertical-align:top"'E'
><td style="vertical-align:top"'\u0045'
<>td>"the upper-case variant 'e'
of . Символ экспонента будет символом java.text.DecimalFormatSymbols#get ExponentSeparator экспонентного разделителя (например, ). 'E'
<tr><th scope="row" style="vertical-align:top">'g'
<td style="vertical-align:top"'\u0067'
><td>" требует форматирования выходных данных в общем научном нотации, как описано ниже. Применяется алгоритм локализации.
После округления для точности форматирование результирующей величины зависит от его значения.
Если m больше или равно 10<sup-4<>/sup>, но менее 10<sup точности</sup>>, он представлен в десятичном формате.
Если m меньше 10<sup-4<>/sup> или больше или равно 10<sup точности</sup>>, то он представлен в компьютеризированной научной нотации.
Общее количество значимых цифр в m равно точности. Если точность не указана, значение по умолчанию равно 6
. Если точность равна0
, то требуется.1
'#'
Если флаг задан, FormatFlagsConversionMismatchException
будет создано исключение.
<tr><th scope="row" style="vertical-align:top"'G'
><td style="vertical-align:top"'\u0047'
<>td>"the upper-case variant 'g'
of .
<tr><th scope="row" style="vertical-align:top"'f'
><td style="vertical-align:top"'\u0066'
<>td>" требует форматирования выходных данных с использованием десятичного> формата. Применяется алгоритм локализации.
Результатом является строка, представляющая знак и величину (абсолютное значение) аргумента. Форматирование знака описано в алгоритме локализации. Форматирование величины m зависит от его значения.
Если m NaN или бесконечно, то будут выводиться литеральные строки "NaN" или "Бесконечность" соответственно. Эти значения не локализованы.
Величина форматируется как целочисленная часть m, без начальных нулей, а затем десятичный разделитель, за которым следует одна или несколько десятичных цифр, представляющих дробную часть m.
Число цифр в результате дробной части m или равно точности. Если точность не указана, значение по умолчанию равно 6
. Если точность меньше числа цифр, которые будут отображаться после десятичной запятой в строке, возвращаемой Float#toString(float)
или Double#toString(double)
соответственно, значение будет округляться с помощью алгоритма java.math.RoundingMode#HALF_UP округления половины. В противном случае можно добавить нули, чтобы достичь точности. Для канонического представления значения используйте Float#toString(float)
или Double#toString(double)
соответствующим образом.
<tr><th scope="row" style="vertical-align:top">'a'
<td style="vertical-align:top"'\u0061'
><td>" требует форматирования выходных данных в шестнадцатеричной экспоненциальной форме. Локализация не применяется.
Результатом является строка, представляющая знак и величину (абсолютное значение) аргумента x.
Если x имеет отрицательное или отрицательное нулевое значение, результат начинается с '-'
('\u002d'
).
Если x является положительным или положительным нулевым значением, и '+'
флаг получается, результат начинается с '+'
('\u002b'
).
Форматирование величины m зависит от его значения.
<ul>
<li> , если значение равно NaN или бесконечно, будут выводиться литеральные строки "NaN" или "Бесконечность" соответственно.
<li> , если нулю, то он представлен строкой "0x0.0p0"
.
<li> Если m является double
значением с нормализованным представлением, то подстроки используются для представления полей знака и экспонентов. Знаки представлены символами "0x1."
, за которыми следует шестнадцатеричное представление остальной части знаки в виде дроби. Экспонент представляется 'p'
('\u0070'
) за десятичной строкой необязуемой экспоненты, как будто создается путем вызова Integer#toString(int) Integer.toString
экспоненциального значения. Если задана точность, значение округляется до заданного числа шестнадцатеричных цифр.
<li> Если m является double
значением с поднормальным представлением, то, если точность не указана в диапазоне от 1 до 12 включительно, знаки представлены символами '0x0.'
, за которыми следует шестнадцатеричное представление остальной части знака как дробь, и экспонент, представленный 'p-1022'
. Если точность находится в интервале [1,>; 12], субнормальное значение нормализуется таким образом, что начинается с символов '0x1.'
, округляется до числа шестнадцатеричных цифр точности, а экспонент корректируется соответствующим образом. Обратите внимание, что в поднормальном знаке должно быть по крайней мере одна ненулевое число.
</ul>
'('
Если заданы флаги или ','
флаги, FormatFlagsConversionMismatchException
создается исключение.
<tr><th scope="row" style="vertical-align:top"'A'
><td style="vertical-align:top"'\u0041'
<>td>"the upper-case variant 'a'
of . Вся строка, представляющая число, будет преобразована в верхний регистр, включая 'x'
() и ('\u0078'
'\u0070'
и 'p'
все шестнадцатеричные цифры 'a'
- 'f'
('\u0061'
- '\u0066'
).
</tbody></table>
Все флаги, определенные для байтов, short, integer и Long, применяются.
'#'
Если флаг задан, то десятичный разделитель всегда будет присутствовать.
Если флаги floatdFlags> не заданы по умолчанию для форматирования, как показано ниже.
<ul>
<li> Выходные данные оправданы правой стороны в width
<отрицательных числах li> начинаются с '-'
<ли> положительных чисел и положительного нуля не включают знак или дополнительное начальное пространство.
<li> Нет разделителей группирования
<li> Десятичный разделитель будет отображаться только в том случае, если цифра следует за ней.
</ul>
Ширина floatDWidth> — это минимальное количество символов, записываемых в выходные данные. К ним относятся все знаки, цифры, разделители группирования, десятичные разделители, экспоненциальные символы, индикатор радикса, скобки и строки, представляющие бесконечность и NaN, как применимо. Если длина преобразованного значения меньше ширины, выходные данные будут заполнены пробелами ('\u0020'
), пока общее число символов не равно ширине. По умолчанию заполнение находится слева. '-'
Если флаг задан, то заполнение будет справа. Если ширина не указана, не существует минимального значения.
Если преобразование floatDPrec> равно 'e'
'E'
или'f'
, то точность — это число цифр после десятичного разделителя. Если точность не указана, предполагается, что она должна быть 6
.
Если преобразование равно 'g'
или 'G'
, то точность — общее количество значимых цифр в результирующей величине после округления. Если точность не указана, значение по умолчанию равно 6
. Если точность равна0
, то требуется.1
Если преобразование равно 'a'
или 'A'
, то точность — это число шестнадцатеричных цифр после точки радикса. Если точность не указана, все цифры, возвращаемые результатом Double#toHexString(double)
, будут выводиться.
"dnbdec"><b> BigDecimal </b>
Можно применить java.math.BigDecimal BigDecimal
следующие преобразования.
<table class="striped"><caption style="display:none">floatConv</caption><tbody>
<tr><th scope="row" style="vertical-align:top"'e'
><td style="vertical-align:top"'\u0065'
<>td>" требует форматирования выходных данных с помощью> компьютеризованной научной нотации. Применяется алгоритм локализации.
Форматирование величины m зависит от его значения.
Если значение m равно положительному нулю или отрицательному нулю, то экспонент будет "+00"
.
В противном случае результатом является строка, представляющая знак и величину (абсолютное значение) аргумента. Форматирование знака описано в алгоритме локализации. Форматирование величины m зависит от его значения.
Пусть n будет уникальным целым числом, таким образом, что 10<sup>n</>sup <= m < 10<sup>n+1</sup>; затем позвольтебыть математически точным м и 10<sup n</sup>>, чтобы 1 <= <'e'
('\u0065'
), за которым следует знак экспонента, за которым следует представление n в виде десятичного целого числа, как производится методомLong#toString(long, int)
, и отсчитывается от нуля, чтобы включить по крайней мере две цифры.
Число цифр в результате дробной части m или равно точности. Если точность не указана, значение по умолчанию равно 6
. Если точность меньше числа цифр справа от десятичной запятой, значение будет округляться с помощью алгоритма java.math.RoundingMode#HALF_UP округления. В противном случае можно добавить нули, чтобы достичь точности. Для канонического представления значения используйте BigDecimal#toString()
.
','
Если флаг задан, FormatFlagsConversionMismatchException
будет создано исключение.
<tr><th scope="row" style="vertical-align:top"'E'
><td style="vertical-align:top"'\u0045'
<>td>"the upper-case variant 'e'
of . Символ экспонента будет 'E'
('\u0045'
).
<tr><th scope="row" style="vertical-align:top">'g'
<td style="vertical-align:top"'\u0067'
><td>" требует форматирования выходных данных в общем научном нотации, как описано ниже. Применяется алгоритм локализации.
После округления для точности форматирование результирующей величины зависит от его значения.
Если m больше или равно 10<sup-4<>/sup>, но менее 10<sup точности</sup>>, он представлен в десятичном формате.
Если m меньше 10<sup-4<>/sup> или больше или равно 10<sup точности</sup>>, то он представлен в компьютеризированной научной нотации.
Общее количество значимых цифр в m равно точности. Если точность не указана, значение по умолчанию равно 6
. Если точность равна0
, то требуется.1
'#'
Если флаг задан, FormatFlagsConversionMismatchException
будет создано исключение.
<tr><th scope="row" style="vertical-align:top"'G'
><td style="vertical-align:top"'\u0047'
<>td>"the upper-case variant 'g'
of .
<tr><th scope="row" style="vertical-align:top"'f'
><td style="vertical-align:top"'\u0066'
<>td>" требует форматирования выходных данных с помощью десятичного формата "bdecimal".> Применяется алгоритм локализации.
Результатом является строка, представляющая знак и величину (абсолютное значение) аргумента. Форматирование знака описано в алгоритме локализации. Форматирование величины m зависит от его значения.
Величина форматируется как целочисленная часть m, без начальных нулей, а затем десятичный разделитель, за которым следует одна или несколько десятичных цифр, представляющих дробную часть m.
Число цифр в результате дробной части m или равно точности. Если точность не указана, значение по умолчанию равно 6
. Если точность меньше числа цифр справа от десятичной запятой, значение будет округляться с помощью алгоритма java.math.RoundingMode#HALF_UP округления. В противном случае можно добавить нули, чтобы достичь точности. Для канонического представления значения используйте BigDecimal#toString()
.
</tbody></table>
Все флаги, определенные для байтов, short, integer и Long, применяются.
'#'
Если флаг задан, то десятичный разделитель всегда будет присутствовать.
Поведение по умолчанию, если флаги не заданы, совпадают с значением Float и Double.
Спецификация ширины и точности совпадает с спецификацией float и Double.
<h4>"ddt">Date/Time</h4>
Это преобразование может применяться к long
, Long
Date
Calendar
и TemporalAccessor TemporalAccessor
<классу таблицы="полосатый><"стиль заголовка="display:none">DTConv</caption><tbody>
<tr><th scope="row" style="vertical-align:top">'t'
<td style="vertical-align:top"'\u0074'
><td> Prefix для символов преобразования даты и времени. <tr><th scope="row" style="vertical-align:top"'T'
><td style="vertical-align:top"'\u0054'
<>td>"the upper-case variant 't'
of .
</tbody></table>
Следующие суффиксы символов преобразования даты и времени определяются для 't'
и 'T'
преобразования. Типы аналогичны, но не полностью идентичны тем, которые определены GNU date
и POSIX strftime(3c)
. Дополнительные типы преобразования предоставляются для доступа к функциям Java (например 'L'
, для миллисекунд в секунду).
Следующие символы преобразования используются для времени форматирования:
<table class="striped"><caption style="display:none">time</caption><tbody>
<tr><th scope="row" style="vertical-align:top">'H'
<td style="vertical-align:top">'\u0048'
<td> Hour of the day for the 24-hour clock, отформатированный как две цифры с начальным нулем по мере необходимости, т. е. 00
00 - 23
соответствует полуночи.
<tr><th scope="row" style="vertical-align:top"'I'
><td style="vertical-align:top"'\u0049'
<>td> Hour for the 12-часовой часы, отформатированный как две цифры с начальным нулем при необходимости, т. е. 01 - 12
01
соответствует одному часову (либо утром, либо днем).
<tr><th scope="row" style="vertical-align:top">'k'
<td style="vertical-align:top">'\u006b'
<td> Hour of the day for the 24-hour clock, т. е. 0 - 23
0
соответствует полуночи.
<tr><th scope="row" style="vertical-align:top">'l'
<td style="vertical-align:top">'\u006c'
<td> Hour for the 12-часовой часы, т. е. 1 - 12
1
соответствует одному часову (утром или днем).
<tr><th scope="row" style="vertical-align:top"'M'
><td style="vertical-align:top"'\u004d'
<>td> Minute в течение часа форматируется как две цифры с начальным нулем по мере необходимости. 00 - 59
<tr><th scope="row" style="vertical-align:top">'S'
<td style="vertical-align:top">'\u0053'
<td> Seconds в течение минуты, отформатированный как две цифры с начальным нулем по мере необходимости, т. е. 00 - 60
("60
" является специальным значением, необходимым для поддержки секунд прыжка).
<tr><th scope="row" style="vertical-align:top"'L'
><td style="vertical-align:top"'\u004c'
<>td> Millisecond внутри второго форматирования как три цифры с начальными нулями по мере необходимости. 000 - 999
<tr><th scope="row" style="vertical-align:top"'N'
><td style="vertical-align:top"'\u004e'
<>td> Nanosecond внутри второй, отформатированный как девять цифр с начальными нулями по мере необходимости. 000000000 - 999999999
Точность этого значения ограничена разрешением базовой операционной системы или оборудования.
<tr><th scope="row" style="vertical-align:top"'p'
><td style="vertical-align:top"'\u0070'
<>td> Locale-specific java.text.DateFormatSymbols#getAmPmStrings morning or afternoon маркер в нижнем регистре, например""am
или "pm
". Использование префикса 'T'
преобразования заставляет выходные данные в верхний регистр. (Обратите внимание, что 'p'
выводит выходные данные нижнего регистра. Это отличается от GNU date
и POSIX strftime(3c)
, которые создают выходные данные верхнего регистра.)
<tr><th scope="row" style="vertical-align:top"'z'
<>td style="vertical-align:top"<'\u007a'
>td>RFC 822 style numeric time zone offset from GMT, например. -0800
Это значение будет скорректировано по мере необходимости для летнего времени. Для long
этого Long
Date
экземпляра виртуальной машины Java используется часовой пояс по умолчанию TimeZone#getDefault().
<tr><th scope="row" style="vertical-align:top">'Z'
<td style="vertical-align:top"'\u005a'
><td> A string, представляющий сокращение часового пояса. Это значение будет скорректировано по мере необходимости для летнего времени. Для long
этого Long
Date
экземпляра виртуальной машины Java используется часовой пояс по умолчанию TimeZone#getDefault(). Языковой стандарт Formatter заменяет языковой стандарт аргумента (если таковой есть).
<tr><th scope="row" style="vertical-align:top"<'s'
>td style="vertical-align:top">'\u0073'
<td> Seconds с начала эпохи, начиная с 1 января 1970 00:00:00
UTC, т. е. Long.MIN_VALUE/1000
Long.MAX_VALUE/1000
<tr><th scope="row" style="vertical-align:top"<'Q'
>td style="vertical-align:top">'\u004f'
<td> Milliseconds с начала эпохи, начиная с 1 января 1970 00:00:00
UTC, т. е. Long.MIN_VALUE
Long.MAX_VALUE
Точность этого значения ограничена разрешением базовой операционной системы или оборудования.
</tbody></table>
Для форматирования дат используются следующие символы преобразования:
<table class="striped"><caption style="display:none">date</caption><tbody>
<tr><th scope="row" style="vertical-align:top">'B'
<td style="vertical-align:top">'\u0042'
<td> Locale-specific java.text.DateFormatSymbols#getMonths full month name, например "January"
, . "February"
<tr><th scope="row" style="vertical-align:top">'b'
<td style="vertical-align:top">'\u0062'
<td> Locale-specific java.text.DateFormatSymbols#getShortMonths сокращенное имя месяца, например "Jan"
, . "Feb"
<tr><th scope="row" style="vertical-align:top"'h'
><td style="vertical-align:top"'\u0068'
<>td> То же самое.'b'
<tr><th scope="row" style="vertical-align:top">'A'
<td style="vertical-align:top"<'\u0041'
>td> Locale-specific name of the java.text.DateFormatSymbols#getWeekdays day of the week, например"Sunday"
, "Monday"
<tr><th scope="row" style="vertical-align:top"'a'
><td style="vertical-align:top">'\u0061'
<td> Locale-specific short name of java.text.DateFormatSymbols#getShortWeekdays day of the week, например "Mon"
"Sun"
<, tr><th scope="row" style="vertical-align:top"><'C'
td style="vertical-align:top"><'\u0043'
td> Четырехзначный год разделен 100
на , отформатированный как две цифры с начальным нулем по мере необходимости, т. 00 - 99
<tr><th scope="row" style="vertical-align:top">'Y'
<td style="vertical-align:top">'\u0059'
<td> Year, отформатированный по крайней мере четыре цифры с начальными нулями по мере необходимости, например 0092
равно 92
CE для григорианского календаря.
<tr><th scope="row" style="vertical-align:top"'y'
><td style="vertical-align:top"'\u0079'
<>td> Последние две цифры года, отформатированные с начальными нулями по мере необходимости. 00 - 99
<tr><th scope="row" style="vertical-align:top"'j'
><td style="vertical-align:top"'\u006a'
<>td> Day of year, отформатированный как три цифры с начальными нулями по мере необходимости, например 001 - 366
для григорианского календаря. 001
соответствует первому дню года.
<tr><th scope="row" style="vertical-align:top"<'m'
>td style="vertical-align:top"'\u006d'
><td> Month, отформатированный как две цифры с начальными нулями по мере необходимости, т. е. 01 - 13
где "01
" является первым месяцем года и ("13
" является специальным значением, необходимым для поддержки лунных календарей).
<tr><th scope="row" style="vertical-align:top">'d'
<td style="vertical-align:top">'\u0064'
<td> Day of month, отформатированный как две цифры с начальными нулями по мере необходимости, т. е. 01 - 31
где "01
" является первым днем месяца.
<tr><th scope="row" style="vertical-align:top">'e'
<td style="vertical-align:top">'\u0065'
<td> Day of month, отформатированный как две цифры, т. е. 1 - 31
где "1
" является первым днем месяца.
</tbody></table>
Следующие символы преобразования используются для форматирования общих композиций даты и времени.
<table class="striped"><caption style="display:none">composites</caption><tbody>
<tr th scope="row" style="vertical-align:top">'R'
<td style="vertical-align:top">'\u0052'
<td> Time formatted for the 24-hour clock as "%tH:%tM"
<tr><><th scope="row" style="vertical-align:top"<'T'
>td style="vertical-align:top"'\u0054'
<>td> Time formatted for the 24-hour clock as."%tH:%tM:%tS"
<tr><th scope="row" style="vertical-align:top"'r'
><td style="vertical-align:top"'\u0072'
<>td> Time formated for the 12-hour clock as ."%tI:%tM:%tS %Tp"
Расположение маркера утром или днем ('%Tp'
) может зависеть от языкового стандарта.
<tr><th scope="row" style="vertical-align:top"'D'
><td style="vertical-align:top"'\u0044'
<>td> Date formatted as ."%tm/%td/%ty"
<tr><th scope="row" style="vertical-align:top"'F'
<>td style="vertical-align:top"<'\u0046'
>td>ISO 8601 complete date formatted as ."%tY-%tm-%td"
<tr><th scope="row" style="vertical-align:top">'c'
<td style="vertical-align:top">'\u0063'
<td> Date and time formated as "%ta %tb %td %tT %tZ %tY"
, например. "Sun Jul 20 16:17:00 EDT 1969"
</tbody></table>
Применяется '-'
флаг, определенный для общих преобразований. '#'
Если флаг задан, FormatFlagsConversionMismatchException
будет создано исключение.
Ширина — это минимальное количество символов, записываемых в выходные данные. Если длина преобразованного значения меньше width
, то выходные данные будут заполнены пробелами ('\u0020'
), пока общее число символов не равно ширине. По умолчанию заполнение находится слева. '-'
Если флаг задан, то заполнение будет справа. Если ширина не указана, не существует минимального значения.
Точность неприменима. Если указана IllegalFormatPrecisionException
точность, создается исключение.
<h4>"dper">Percent</h4>
Преобразование не соответствует ни одному аргументу.
<table class="striped"caption style="display:none">><DTConv</caption><tbody>
<tr><th scope="row" style="vertical-align:top"'%'
<>td> Результатом является литерал '%'
()'\u0025'
Ширина — это минимальное число символов, записываемых в выходные данные, включая '%'
. Если длина преобразованного значения меньше width
, то выходные данные будут заполнены пробелами ('\u0020'
), пока общее число символов не равно ширине. Заполнение находится слева. Если ширина не указана, то только выходные '%'
данные.
Применяется '-'
флаг, определенный для общих преобразований. Если предоставляются другие флаги, FormatFlagsConversionMismatchException
создается исключение.
Точность неприменима. Если указана IllegalFormatPrecisionException
точность, будет возникать.
</tbody></table>
<h4>"dls">Разделитель< строк/h4>
Преобразование не соответствует ни одному аргументу.
<table class="striped"caption style="display:none">><DTConv</caption><tbody>
<tr><th scope="row" style="vertical-align:top"><'n'
td> the platform-specific line separator as returned by .System#lineSeparator()
</tbody></table>
Флаги, ширина и точность не применимы. Если какие-либо указаны IllegalFormatFlagsException
, IllegalFormatWidthException
и IllegalFormatPrecisionException
, соответственно, будут вызваны.
<h4>"dpos">Argument Index</h4>
Описатели формата могут ссылаться на аргументы тремя способами:
<ul>
<ли>явное индексирование используется, когда описатель формата содержит индекс аргумента. Индекс аргумента — это десятичное целое число, указывающее положение аргумента в списке аргументов. Первый аргумент ссылается на "1$
", второй по "2$
" и т. д. Аргумент может ссылаться несколько раз.
Например:
<blockquote>
formatter.format("%4$s %3$s %2$s %1$s %4$s %3$s %2$s %1$s",
"a", "b", "c", "d")
// -> "d c b a d c b a"
</blockquote>
<li>Относительный индексирование используется, когда описатель формата содержит '<'
флаг ('\u003c'
), который приводит к повторному использованию аргумента для предыдущего описателя формата. Если предыдущий аргумент отсутствует, MissingFormatArgumentException
создается исключение.
<blockquote>
formatter.format("%s %s %<s %<s", "a", "b", "c", "d")
// -> "a b b b"
// "c" and "d" are ignored because they are not referenced
</blockquote>
<li>Обычный индексирование используется, если описатель формата не содержит ни индекс аргумента, '<'
ни флаг. Каждый описатель формата, использующий обычную индексацию, назначается последовательный неявный индекс в список аргументов, который не зависит от индексов, используемых явным или относительным индексированием.
<blockquote>
formatter.format("%s %s %s %s", "a", "b", "c", "d")
// -> "a b c d"
</blockquote>
</ul>
Можно использовать строку формата, которая использует все формы индексирования, например:
<blockquote>
formatter.format("%2$s %s %<s %s", "a", "b", "c", "d")
// -> "b a a b"
// "c" and "d" are ignored because they are not referenced
</blockquote>
Максимальное количество аргументов ограничено максимальным измерением массива Java, как определено <в справочнике>"Java™ Спецификация< или сайт> виртуальной машины. Если индекс аргумента не соответствует доступному аргументу, MissingFormatArgumentException
создается исключение.
Если есть больше аргументов, чем описатели формата, дополнительные аргументы игнорируются.
Если иное не указано, передача аргумента null
любому методу или конструктору в этом классе приведет NullPointerException
к возникновению ошибки.
Добавлено в версии 1.5.
Документация по Java для java.util.Formatter
.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Конструкторы
Formatter() |
Создает новый форматировщик. |
Formatter(File) |
Создает новый форматировщик с указанным файлом. |
Formatter(File, Charset, Locale) |
Создает новый форматировщик с указанным файлом, charset и языковым стандартом. |
Formatter(File, String) |
Создает новый форматировщик с указанным файлом и набором символов. |
Formatter(File, String, Locale) |
Создает новый форматировщик с указанным файлом, charset и языковым стандартом. |
Formatter(IAppendable) |
Создает новый форматировщик с указанным назначением. |
Formatter(IAppendable, Locale) |
Создает новый форматировщик с указанным целевым и языковым стандартом. |
Formatter(Locale) |
Создает новое средство форматирования с указанным языковым стандартом. |
Formatter(PrintStream) |
Создает новый форматировщик с указанным потоком печати. |
Formatter(Stream) |
Создает новое средство форматирования с указанным выходным потоком. |
Formatter(Stream, Charset, Locale) |
Создает новый форматировщик с указанным выходным потоком, символом и языковым стандартом. |
Formatter(Stream, String) |
Создает новое средство форматирования с указанным потоком выходных данных и набором символов. |
Formatter(Stream, String, Locale) |
Создает новый форматировщик с указанным выходным потоком, символом и языковым стандартом. |
Formatter(String) |
Создает новый форматировщик с указанным именем файла. |
Formatter(String, Charset, Locale) |
Создает новое средство форматирования с указанным именем файла, кодировкой и языковым стандартом. |
Formatter(String, String) |
Создает новое средство форматирования с указанным именем файла и набором символов. |
Formatter(String, String, Locale) |
Создает новое средство форматирования с указанным именем файла, кодировкой и языковым стандартом. |
Свойства
Class |
Возвращает класс среды выполнения этого |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
JniIdentityHashCode |
Интерпретатор для строк форматирования в стиле printf. (Унаследовано от Object) |
JniPeerMembers |
Интерпретатор для строк форматирования в стиле printf. |
PeerReference |
Интерпретатор для строк форматирования в стиле printf. (Унаследовано от Object) |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
Методы
Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от Object) |
Close() |
Закрывает этот форматировщик. |
Dispose() |
Интерпретатор для строк форматирования в стиле printf. (Унаследовано от Object) |
Dispose(Boolean) |
Интерпретатор для строк форматирования в стиле printf. (Унаследовано от Object) |
Equals(Object) |
Указывает, равен ли другой объект этому объекту. (Унаследовано от Object) |
Flush() |
Очищает этот форматировщик. |
Format(Locale, String, Object[]) |
Записывает форматированную строку в назначение этого объекта с помощью указанной строки формата и аргументов. |
Format(String, Object[]) |
Записывает форматированную строку в назначение этого объекта с помощью указанной строки формата и аргументов. |
GetHashCode() |
Возвращает значение хэш-кода для объекта. (Унаследовано от Object) |
IoException() |
Возвращает последнее, созданное |
JavaFinalize() |
Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет. (Унаследовано от Object) |
Locale() |
Возвращает языковой стандарт, заданный конструкцией этого модуля форматирования. |
Notify() |
Пробуждение одного потока, ожидающего монитора этого объекта. (Унаследовано от Object) |
NotifyAll() |
Просыпает все потоки, ожидающие монитора этого объекта. (Унаследовано от Object) |
Out() |
Возвращает место назначения для выходных данных. |
SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
ToArray<T>() |
Интерпретатор для строк форматирования в стиле printf. (Унаследовано от Object) |
ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
UnregisterFromRuntime() |
Интерпретатор для строк форматирования в стиле printf. (Унаследовано от Object) |
Wait() |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>помощи уведомления</em> или <эм>прерванного</em>. (Унаследовано от Object) |
Wait(Int64) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
Wait(Int64, Int32) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
IJavaPeerable.Disposed() |
Интерпретатор для строк форматирования в стиле printf. (Унаследовано от Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Интерпретатор для строк форматирования в стиле printf. (Унаследовано от Object) |
IJavaPeerable.Finalized() |
Интерпретатор для строк форматирования в стиле printf. (Унаследовано от Object) |
IJavaPeerable.JniManagedPeerState |
Интерпретатор для строк форматирования в стиле printf. (Унаследовано от Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Интерпретатор для строк форматирования в стиле printf. (Унаследовано от Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Интерпретатор для строк форматирования в стиле printf. (Унаследовано от Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Интерпретатор для строк форматирования в стиле printf. (Унаследовано от Object) |
Методы расширения
JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
JavaCast<TResult>(IJavaObject) |
Интерпретатор для строк форматирования в стиле printf. |
GetJniTypeName(IJavaPeerable) |
Интерпретатор для строк форматирования в стиле printf. |
FlushAsync(IFlushable) |
Интерпретатор для строк форматирования в стиле printf. |