Автор оригинала: Pankaj Kumar.
Формат строки Java позволяет нам расположить вещи определенным образом или в определенном порядке. Существует много способов форматирования строк, но это не так популярно, потому что большую часть времени нам нужны простые преобразования, которые можно выполнить с помощью объединения строк . Сегодня мы рассмотрим примеры строкового формата java.
Формат строки Java
Концепция форматированной строки, начатая с C, Java также предоставляет функцию форматированной печати с использованием класса, известного как java.util.Форматер . На самом деле концепция форматированных строк Java вдохновлена концепцией C sprintf .
Давайте посмотрим, как выглядит простой метод строкового формата.
String formattedString = String.format("My name is %s","John");
Над одним кодом строки будет выводиться как:
My name is John
То же самое может быть достигнуто как "Меня зовут "+"Джон" и здесь нам даже не нужно запоминать все разные спецификаторы. Однако форматирование строк является лучшим подходом по следующим причинам:
- Объединение строк – дорогостоящее дело.
- Если форматированная строка длинная, то объединение строк вызывает проблемы с удобочитаемостью.
- При конкатенации строк мы должны выполнять преобразование между различными объектами в строки.
- Преимущество форматирования строк хорошо видно там, где строка формата считывается из файла свойств.
Метод String.format() возвращает отформатированную строку на основе строки формата и аргументов, предоставленных методу.
В приведенном выше примере “Меня зовут %s” – это строка формата. Он содержит спецификатор формата “%s”, который указывает, как должен обрабатываться аргумент и где он будет помещен в вывод.
Метод format также использует языковой стандарт для форматирования строки. Если языковой стандарт не указан в методе String.format () , он использует языковой стандарт по умолчанию, вызывая метод Locale.getDefault () .
Пример Строкового формата Java
Существуют ситуации и сценарии, когда мы хотели бы, чтобы на консоли отображалась отформатированная строка; ее использование может варьироваться от отладки до более читаемого кода. Чтобы получить отформатированные строки на консоли, нам нужно использовать следующие методы.
- System.out.printf()
- System.err.printf()
методы printf() и format() ведут себя одинаково. Примеры вышеупомянутых методов приведены ниже.
System.out.printf(): Чаще всего используется для печати на консоли в целях отладки или для вывода вывода на экран.- System.err.printf(): В основном используется для печати ошибки на консоли. Также для предоставления пользовательских сообщений об ошибках на консоли.
Выход:
Выход:
Форматирование строк Java с помощью StringBuffer и StringBuilder
Мы также можем использовать форматирование с помощью StringBuffer и StringBuilder.
StringBuilder sb = new StringBuilder();
Formatter formatter = new Formatter(sb);
Formatter.format("value is %f",32.33434);
System.out.print(sb.toString());
Выход:
value is 32.334340
Спецификаторы Преобразования Строкового Формата Java
Спецификаторы преобразования строкового формата Java – это те, которые играют важную роль в форматировании строк. Поскольку спецификаторы-это те, которые сообщают, как должно быть обработано преобразование и где добавлять аргументы в текст.
Давайте взглянем на доступные спецификаторы преобразования вместе с их примерами.
| Шестигранник 0x1.02acba732df5p5 | Плавающая точка | Результатом является шестнадцатеричное представление числа с плавающей запятой | Строка.формат(“Hex – это %a”,32.33434); | %а,%А |
| значение истинно | Все типы | Если аргумент arg равен нулю, то результат будет “ложным”. Если arg является логическим или логическим, то результатом является строка, возвращаемая String.valueOf(arg). В противном случае результат будет “истинным”. | Строка.формат(“значение равно %b”,”a”.равно(“a”)); | %b, %B |
| Юникод-это | Характер | В результате получается символ Юникода | Строка.формат(“Юникод-это %C”,”T”); | %c, %C |
| Число равно 6 | байт, Байт, короткий, Короткий, int, Целое число, длинный, Длинный и BigInteger | Результаты в виде десятичного целого числа | Строка.Формат(“Число равно %d”, 2*3); | %d |
| Номер 6.000000 e+00 | Плавающая точка | Результаты в десятичном числе в компьютерной научной системе счисления | Формат строки(“Число равно %e”, 2*3,0); | %е, %е |
| Номер 6.000000 | Плавающая точка | Результаты в десятичном числе | Формат строки(“Число равно %f”, 2*3,0); | %f |
| Номер 6.000000 | Плавающая точка | Формат основан на компьютерной научной нотации или десятичном формате, в зависимости от точности и значения после округления. | Формат строки(“Число равно %g”, 2*3,0); | %г, %г |
| Шестигранник равен 12202 | Любого типа | Результаты в шестнадцатеричной строке на основе вывода метода hashCode() | Строка.формат(“Hex – это %h”,”Jay”); | %ч, %Ч |
| Меня зовут Джон. Я знаю Java | Линейный сепаратор | Результаты в разделителе строк для конкретной платформы | Строка.формат(“Меня зовут %s. %n Я знаю Java “,”Джон”); | %n |
| Число-11 | байт, Байт, короткий, Короткий, int, Целое число, длинный, Длинный и BigInteger | Приводит к восьмеричному целому числу | Строка.Формат(“Число равно %o”, 3*3); | %o |
| Меня зовут Джон | Любого типа | В результате получается строка | Строка.формат(“Меня зовут %s”,”Джон”); | %s |
| Местное время: 17:52:40 | Дата и время | Это префиксы для символов преобразования даты и времени | Строка.формат(“Местное время: %tT”, Calendar.getInstance()); | %т, %Т |
| Число-17 | байт, Байт, короткий, Короткий, int, Целое число, длинный, Длинный и BigInteger | В результате получается шестнадцатеричное целое число | Строка.Формат(“Число равно %x”, 23); | %x, %X |
Преобразования, обозначенные прописными буквами (т. Е. “B”, “H”, “S”, “C”, “X”, “E”, “G”, ” A ” и “T”), такие же, как и для соответствующих символов преобразования в нижнем регистре, разница только в том, что результат преобразуется в верхний регистр в соответствии с правилами локали.
Форматирование строк Java Преобразование даты и времени
Следующие символы преобразования даты и времени используются в качестве суффикса наряду с ” t ” и ” T ” для преобразования даты и времени.
Пример : %tA приведет к полному названию дня недели.
| Полное название дня недели, например “Воскресенье”, “Понедельник” | A |
| Краткое название дня недели, например “Пн”, “Вт” | a |
| Полное название месяца, например “Январь”, “Февраль”. | B |
| Краткое название месяца, например “Январь”, “февраль”. | b |
| Последние две цифры года, начиная с 00 до 99 | C |
| Дата и время отформатированы как “%ta %tb %td %tT %tZ %tY”, например “Пн 01 января 16:17:00 CST 2018” | c |
| Дата отформатирована как “%tm/%td/%ty”, например “31.12.17” | D |
| День представлен двумя цифрами с начальными нулями, где это необходимо, начиная с 01 по 31. | d |
| День месяца представлен двумя цифрами, например 1 – 31. | e |
| Дата отформатирована в формате ISO 8601 как “%tY-%tm-%td”, например “2017-12-31” | F |
| Часовое представление в формате 24 часов с начальным нулем по мере необходимости, т. е. с 00 до 23. | H |
| Краткое название месяца, например “Январь”, “февраль”. | h |
| Час представлен в 12-часовом формате, отформатированном в виде двух цифр с начальным нулем по мере необходимости, т. е. 01 – 12. | I |
| День года из 366 дней (с учетом високосного года), представленный ведущими 0, т. е. от “001” до “366”. | j |
| Часовое представление в 24 – часовом формате без ведущего 0, начиная с “0” до “23”. | k |
| Часовое представление в 12-часовом формате без ведущего 0, например от “1” до “12”. | l |
| Миллисекунда в пределах секунды отформатирована в виде трех цифр с начальными нулями, начиная с 000 до 999. | L |
| Минута в течение часа отформатирована с нуля, начиная с “00” до “59”. | M |
| Месяц отформатирован с начальным нулем, например, от “01” до “12”. | m |
| Наносекунда в пределах секунды, представленная 9 цифрами и ведущими 0, такими как “000000000” до “999999999”. | N |
| Специфичный для локали спецификатор утра или дня, такой как маркер “am” или “pm”. | p |
| Миллисекунды с начала эпохи 1 января 1970 года 00:00:00 UTC. | Q |
| Время, представленное в 24-часовом формате, т. е. “%tH:%tM”, например “20:00” | R |
| Время представлено в 12-часовом формате,т. е. “%tI:%tM:%tS %Tp”. | r |
| Секунды в течение минуты представлены 2 цифрами, например от “00” до “60”. “60” требуется для поддержки високосных секунд. | S |
| Секунды с начала эпохи 1 января 1970 года 00:00:00 UTC. | s |
| Время представлено в формате 24 часов вместе с секундами как “%tH:%tM:%tS” | T |
| Год, представленный четырьмя цифрами, начиная с”0000″ до “9999” | Y |
| Год, представленный двумя цифрами, начиная с “00” до “99” | y |
| Представление часового пояса в строке типа “IST”, “CST” и т.д. | Z |
| Числовое смещение часового пояса на основе RFC 822, например “-0530” | z |
Ширина Строкового формата Java
Минимальное количество символов, требуемое для вывода, считается шириной. Для преобразования разделителя строк будет создано исключение, так как ширина неприменима или она.
// Width for Integer
String s = String.format("{%10d}", 2017);
System.out.print(s);
// Width for String
String s1 = String.format("{%20s}", "Hello Format");
System.out.print(s1);
Выход:
{ 2017}
{ Hello Format}
Точность Строкового формата Java
Точность-это максимальное количество символов, которые должны быть записаны в выходные данные для целого числа и строки.
Преобразования с плавающей запятой “a”, “A”, “e”, ” E ” и ” f ” имеют точность в виде числа цифр после запятой. Если преобразование ” g ” или “G”, то точность-это общее количество цифр в результирующей величине после округления.
Исключение создается для типов символов, целых чисел и аргументов даты/времени, а также для преобразований в процентах и разделителях строк, поскольку точность для этих типов неприменима.
String s = String.format("{%.8s}", "Hello Format");
System.out.print(s);
Выход:
{Hello Fo}
Индекс Аргумента Строкового формата Java
Индекс аргумента представляет собой десятичное целое число, начинающееся после знака “%” и заканчивающееся знаком”$”. Положение аргумента в списке аргументов определяется на основе значения целого числа.
String s = String.format("{%3$s %2$s %1$s}", "a","b","c");
System.out.print(s);
Выход:
{c b a}
Различные Примеры Форматирования Строк
До сих пор мы наблюдали за различными спецификаторами преобразования и их использованием. В этом последнем разделе давайте проверим некоторые дополнительные различные преобразования.
- Выравнивание текста по левому краю.
- Выравнивание текста по правому краю.
- Представление числового формата, специфичного для конкретной локали.
- Заполнение с нулем.
Выход:
Выход:
Выход:
Выход:
Это все для примеров строкового формата Java, для получения дополнительной информации о строковом формате java, пожалуйста, посетите Formatter API Doc .