Понимание $ в строках формата 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("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
 // -> " d  c  b  a"

В этом случае, почему 2 добавляются к $?

76
задан Joey 16 December 2009 в 14:50
поделиться

3 ответа

2 не имеет ничего общего с $ :

  • % = Начало строки формата
  • 4 $ = Четвертый аргумент ('d')
  • 2 = ширина двух (с выравниванием по правому краю)
  • s = тип строки
121
ответ дан 24 November 2019 в 11:13
поделиться

2 $ означает поместить сюда второй аргумент из списка. $ следует за числом, не предшествующим ему. Аналогично, 4 $ означает здесь четвертый аргумент.

Для пояснения мы можем разбить формат % 2 $ 2s на части:

  • % - указывает, что это строка формата

  • 2 $ - показывает, что здесь следует поместить второй аргумент значения

  • 2 - формат состоит из двух символов

  • s - форматировать значение в виде строки

Дополнительную информацию можно найти в документации .

47
ответ дан 24 November 2019 в 11:13
поделиться

Это позиционные аргументы, в которых % 4 $ 2s сигнализируют о форматировании четвертого аргумента в виде строки шириной 2.Это особенно полезно при предоставлении строк для локализации, где аргументы необходимо переупорядочить, не затрагивая исходный код.

Спецификаторы формата для типов, которые используются для представления даты и времени, имеют следующий синтаксис:

% [аргумент_индекс $] [флаги] [ширина] преобразование

Необязательный индекс_аргумента является десятичным целым числом, указывающим позицию аргумента в списке аргументов. На первый аргумент ссылается "1 $" , на второй - "2 $" и т. Д. - Документация по форматированию

4
ответ дан 24 November 2019 в 11:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: