Java 8 форматування і парсинг

У світі величезна кількість різних мов, релігій, культур і країн. У кожній країні і в кожній мові часто прийняті свої форми запису чисел, дат і грошових одиниць. Локалізація додатку в конкретній країні - це далеко не самий тривіальний процес, що має на увазі не тільки переклад на мову країни, але і запис чисел і дат в форматі, прийнятому в цій країні, видалення іконок і зображень, які порушують законодавство цієї країни і т. Д.

Наприклад, в в російській мові прийнято таку запис дат:

Але якщо ми локалізуємо додаток в США, то дати будуть виглядати так:

Із записом чисел теж все далеко не так просто. Ось числа для російської мови:

А ось ті ж числа для США:

Всі сучасні мови підтримують конвертацію дат і числових змінних в рядок і назад відповідно до зазначених регіональними настройками (локаллю) або регіональними настройками за замовчуванням.

Для розуміння подальшого тексту статті рекомендується ознайомитися з класом java.util.Locale. представляє собою локаль (регіональні настройки).

Ви можете отримати екземпляр поточної локалі за допомогою коду:

Опис стовпця «уявлення»:

java.io.PrintStream

Клас java.io.PrintStream дозволяє писати відформатовані дані в будь-який потік. Вам навряд чи коли-небудь доведеться створювати екземпляри цього класу вручну, набагато частіше ви будете використовувати готові класи, на кшталт повертаються System. out. PrintStream має методи print і println. перевантажені для будь-якого примітивного типу та для класу Object (в цьому випадку використовується його метод toString ()).

Клас PrintStream ніколи не кидає IOException. замість цього він встановлює свій внутрішній прапор, який може бути перевірений за допомогою методу public boolean checkError ().

На особливу увагу заслуговують методи:

public PrintStream format (String format.

public PrintStream format (Locale l.

public PrintStream printf (Locale l.

public PrintStream printf (String format.

Ці методи дозволяють писати в потік відформатовані дані. Тут format - це шаблон рядки, який детально в пункті «java.util.Formatter».

java.util.Formatter

Клас java.util.Formatter використовується у всіх методах, які приймають рядок форматування: java. io. PrintStream. format. System. out. format. String. format і т. д.

Кожен метод, який приймає рядок форматування, потребує шаблоні і списку аргументів. приклад: