- •Лекция 9
- •Форматирование строк
- •Спецификатор формата
- •Категории типов преобразования
- •Форматирование даты/времени
- •Форматирование даты/времени
- •Ошибки форматирования
- •Форматирование сообщений
- •Указание типа и стиля
- •Типы и стили
- •Формат выбора
- •Формат выбора
- •Ресурсы
- •Поиск ресурсов
- •Ресурсы - файлы свойств
- •Создание файлов свойств
- •Ресурсы — class файлы
- •Загрузка ресурсов
- •Создание класса ресурсов
Лекция 9
Интернационализация
Форматирование строк
String String.format(String format, ...)
String String.format(Locale locale, String format, ...)
Форматная строка состоит из спецификаторов формата: %[индекс аргумента$][флаги][ширина][.точность]тип
Спецификатор формата
Индекс аргумента — определяет какой аргумент форматировать в этой позиции
Флаги — дополнительные параметры (зависят от типа) форматирования
Ширина — неотрицательное число, определяющее минимальное кол-во символов
Точность — неотрицательное число, ограничивающее кол-во символов
Тип преобразования задает тип аргумента
Категории типов преобразования
Общие
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)
Форматирование даты/времени
Тип преобразования даты/времени — двухсимвольный. (Второй символ — 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)
Форматирование даты/времени
Пример форматирования с использованием индекса аргумента:
Calendar c = ...;
String s1 = String.format("Duke's Birthday:
%1$tm %1$te,%1$tY", c);
Ошибки форматирования
Исключения:
UnknownFormatConversionException или UnknownFormatFlagsException - если указан неизвестный спецификатор или флаг
IllegalFormatWidthException или IllegalFormatPrecisionException если указана неправильная длина или точность
IllegalFormatConversionException если аргумент метода format не может быть преобразован
Форматирование сообщений
Класс 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
Указание типа и стиля
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
Типы и стили
Типы: |
Стили (date и time) |
number |
short |
time |
medium |
date |
long |
choice |
Full |
|
Стили (number) |
|
integer |
|
currency |
|
percent |