Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
196
Добавлен:
17.04.2018
Размер:
228.86 Кб
Скачать

ИП. ИJ. РC. Строки. Форматирование

МИЭТ, 2017

Категории типов преобразования

Общие

B,b (boolean), H,h (hash code), S,s (string)

Символьные

C,c (character)

Численные

Целые

D,d (decimal), O,o (octal), X,x (hexadecimal)

Вещественные

E,e (научный), f (float), G,g (переменный), A,a (hex)

Дата/время

T,t (time)

Процент

%

Перевод строки

n (new line)

ИП. ИJ. РC. Строки. Форматирование

МИЭТ, 2017

Форматирование даты/времени

Тип преобразования даты/времени — двухсимвольный. (Второй символ — GNU date и POSIX strftime)

H — час 00-23, k — час 0-23

M — минуты 00-59

S — секунды 00-59

L — миллисекунды 000-999

z — смещение GMT (RFC 822)

Z — часовой пояс

B — месяц (полное название)

b — месяц (аббревиатура)

A — день недели (полное название)

a — месяц (аббревиатура)

C — год (00-99)

Y — год (0000-9999)

d — день месяца (01-31)

e — день месяца (1-31)

ИП. ИJ. РC. Строки. Форматирование

МИЭТ, 2017

Форматирование даты/времени

Пример форматирования с использованием индекса аргумента:

Calendar c = ...;

String s1 = String.format("Duke's Birthday:

%1$tm %1$te,%1$tY", c);

ИП. ИJ. РC. Строки. Форматирование. Обработка ошибок

МИЭТ, 2017

Ошибки форматирования

Исключения:

UnknownFormatConversionException или UnknownFormatFlagsException - если указан неизвестный спецификатор или флаг

IllegalFormatWidthException или

IllegalFormatPrecisionException если указана неправильная длина или точность

IllegalFormatConversionException если аргумент метода format не может быть преобразован

ИП. ИJ. РC. Строки. Форматирование.

МИЭТ, 2017

Форматирование сообщений

Класс MessageFormat форматирует текст, содержащий фрагменты, представленные переменными.

String msg = MessageFormat.format("On {2}, a {0} destroyed {1} houses and caused {3} of damage", 99, new GregorianCalendar(1999, 0, 1).getTime(), 10.0E7);

Результат:

On 1/1/99 12:00 AM, a hurricane destroyed 99 houses and caused 100,000,000 of damage

ИП. ИJ. РC. Строки. Форматирование

МИЭТ, 2017

Указание типа и стиля

String msg = MessageFormat.format("On

{2,date,long}, a {0} destroyed {1} houses and caused {3,number,currency} of damage", 99, new GregorianCalendar(1999, 0, 1).getTime(), 10.0E7);

Результат:

On January 1,1999, a hurricane destroyed 99 houses and caused $100,000,000 of damage

ИП. ИJ. РC. Строки. Форматирование

МИЭТ, 2017

Типы и стили

Типы:

Стили (date и time)

number

short

time

medium

date

long

choice

Full

 

Стили (number)

 

integer

 

currency

 

percent

ИП. ИJ. РC. Строки. Форматирование

МИЭТ, 2017

Формат выбора

Если переменная {1} = 1, результат:

On January 1,1999, a hurricane destroyed 1 houses and...

Необходимо: 0 – no houses 1 – one house 2 – 2 houses

...

{1, choice, 0#no houses|1#one house|2#{1}houses}

ИП. ИJ. РC. Строки. Форматирование

МИЭТ, 2017

Формат выбора

Можно указать нестрогую границу: {-̃∞<no houses|0<one house|2≤{1} houses}

String pattern = "On {2,date,long}, {0} destroyed " + "{1,choice,0#no houses|1#one house|2#{1} houses}" + "and caused {3,number,currency} of damage.";

String pattern = "{0} zerstörte am {2,date,long} " + "{1,choise,0#kein Haus|1#ein Haus|2#{1} Häuser}" + "und richtete einen Schaden von" + "{3,number,currency} an.";

Методу format передается один и тот же массив с данными

ИП. ИJ. РC. Строки. Форматирование

МИЭТ, 2017

Ресурсы

Все локализованные данные (текст, картинки и пр.) находятся в пакетах ресурсов (Resource Bundle)

Каждый пакет размещается в файле (файл свойств или класс)

Файл именуется по принципу: имя_пакета_язык_страна

Соседние файлы в папке Интернет технологии