Что означает "% 1 $#", когда используется в String.format(Java)?

Язык - это Java. Что означает %1$# в...

static String padright (String str, int num) {
   return String.format("%1$#" + num + "str", str);
}

В Java API String.format() используется следующим образом:

public static String format(String format, Object... args)

Итак, я думаю, что %1$# - спецификатор формата.

%[flags][width][.precision][argsize]typechar является шаблоном.

  • 1 является флагом?
  • $- ширина?
  • # - точность?
  • num - аргумент argsize?
  • "str" - это типchar?

Правильно ли это?

Ответ 1

Шаблон:

%[argument_index$][flags][width][.precision]conversion

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

Необязательные флаги - это набор символы, которые изменяют вывод формат. Множество действительных флагов зависит от на преобразование.

Необязательная ширина - это десятичное целое число, указывающее минимум количество символов, которые должны быть записаны в выход.

Дополнительная точность - это неотрицательное целое число после запятой используется для ограничения количества персонажи. Конкретное поведение зависит от преобразования.

Требуемое преобразование является символ, указывающий, как аргумент должен быть отформатирован. Набор действительных конверсии для данного аргумента зависит от типа данных аргумента.

%1$ относится к первой подстановке. В этом случае строка str. # - это флаг, в котором говорится, что результат должен использовать зависимую от преобразования альтернативную форму.

http://download.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html