Что означает «% 1 $ #» при использовании в String.format (Java)? - PullRequest
14 голосов
/ 23 апреля 2011

Язык - это 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 это флаг?
  • $ это ширина?
  • # это точность?
  • число аргиз?
  • "str" ​​- это typechar?

Это правильно?

1 Ответ

31 голосов
/ 23 апреля 2011

Шаблон:

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

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

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

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

Необязательная точность - неотрицательное десятичное целое число, обычно используемое для ограничения количества символов.Конкретное поведение зависит от конверсии.

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

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

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

...