Понимание $ в строках формата Java
StringBuilder sb = new StringBuilder();
// Send all output to the Appendable object sb
Formatter formatter = new Formatter(sb, Locale.US);
// Explicit argument indices may be used to re-order output.
formatter.format("%4s %3s %2s %1s", "a", "b", "c", "d")
// -> " d c b a"
в этом случае, почему 2 добавляется к $?
4 ответа:
The
2не имеет ничего общего с$:
%= начало строки формата4$= четвертый аргумент ('d')2= ширина двух (выравнивание по правому краю)s= тип строка
The
2$значит поставить второй аргумент из списка здесь. Элемент$следующее число не предшествует ему. Точно так же,4$означает поставить здесь четвертый аргумент.чтобы уточнить, мы можем разбить в части:
%- указывает, что это формат строки
2$- показывает, что второй аргумент значения должен быть помещен здесь
2- формат состоит из двух символов
s- отформатируйте значение в виде строкивы можете найти более подробную информацию документации.
это позиционные аргументы, где
%4sсигналы в формате четвертый аргумент в виде строки с шириной 2. Это особенно полезно при предоставлении строк для локализации, где аргументы должны быть переупорядочены, не касаясь исходного кода.спецификаторы формата для типов, которые используются для представления дат и времени, имеют следующий синтаксис:
%[argument_index$][flags][width]conversionнеобязательный элемент
argument_index- десятичное целое число, указывающее позицию аргумента в списке аргументов. На первый аргумент ссылается"1$", второй -"2$"и т. д. - форматирования документации
4$ : четвертый параметр значение % : формат строки 2: интервал (длина аргумента) s: его строковый формат
например, следующий фрагмент:
StringBuffer sb=new StringBuffer(); Formatter formatter=new Formatter(sb,Locale.UK); formatter.format("%4s %3s %2s %1s", "a", "b", "c", "d"); System.out.println(sb);выход :
//расстояние в 5 символов между двумя символами
d c b aи замена 5 на 2, даст следующий результат:
d c b A
видите разницу? :)