Класс Formatter
Класс Formatter из пакета java.util используется для создания форматированных строк. Он работает по принципу шаблона: в строку формата вставляются специальные спецификаторы, которые заменяются на переданные значения. Первым параметром конструктор принимает объект, в который будет записан результат (например, StringBuilder или System.out), либо строку формата. Вторым и последующими параметрами передаются аргументы для подстановки. Спецификаторы начинаются с символа % и могут содержать флаги, ширину, точность и тип преобразования. Наиболее часто используемые спецификаторы: %s для строк, %d для целых чисел, %f для чисел с плавающей точкой, %n для перевода строки.
Синтаксис
Formatter formatter = new Formatter(destination, locale);
formatter.format(format, args);
Пример
Давайте создадим объект Formatter, связанный с StringBuilder, и отформатируем строку с несколькими спецификаторами:
import java.util.Formatter;
public class Main
{
public static void main(String[] args)
{
StringBuilder sb = new StringBuilder();
Formatter formatter = new Formatter(sb);
formatter.format("Name: %s, Age: %d, Score: %.2f%n", "abcde", 25, 123.456);
System.out.println(sb.toString());
formatter.close();
}
}
Результат выполнения кода:
"Name: abcde, Age: 25, Score: 123.46"
Пример
Давайте используем Formatter для вывода в стандартный поток вывода System.out:
import java.util.Formatter;
public class Main
{
public static void main(String[] args)
{
Formatter formatter = new Formatter(System.out);
formatter.format("Value 1: %d%n", 12345);
formatter.format("Value 2: %s%n", "abcde");
formatter.format("Value 3: %f%n", 123.456);
formatter.close();
}
}
Результат выполнения кода:
"Value 1: 12345"
"Value 2: abcde"
"Value 3: 123.456000"
Пример
Давайте отформатируем числа с указанием ширины поля и выравнивания:
import java.util.Formatter;
public class Main
{
public static void main(String[] args)
{
StringBuilder sb = new StringBuilder();
Formatter formatter = new Formatter(sb);
formatter.format("|%10s|%n", "abcde");
formatter.format("|%-10s|%n", "abcde");
formatter.format("|%10d|%n", 12345);
formatter.format("|%010d|%n", 12345);
System.out.println(sb.toString());
formatter.close();
}
}
Результат выполнения кода:
"| abcde|"
"|abcde |"
"| 12345|"
"|0000012345|"