Могут ли аргументы повторного использования Stringformatter?

Я использую String.format для создания форматированной строки с аргументами. Можно ли как-то сказать, чтобы форматировать несколько раз использовать аргумент?

String.format(%s FOO %s %s, "test"); //desired output: "test FOO test test"

Ответ 1

Да, для этого можно использовать спецификатор $. Число, предшествующее $, указывает номер аргумента, начиная с 1:

String.format("%1$s FOO %1$s %1$s", "test")

Ответ 2

Как дополнение к Keppils отвечает: Когда вы запустили нумерацию одного из своих аргументов, вы должны их пронумеровать, иначе результат не будет таким, как ожидалось.

String.format("Hello %1$s! What a %2$s %1$s!", "world", "wonderful");
// "Hello world! What a wonderful world!"

будет работать. Пока

String.format("Hello %1$s! What a %s %1$s!", "world", "wonderful");
// "Hello world! What a world world!"

не будет работать. (Но не вызывает никаких ошибок, поэтому это может остаться незамеченным.)

Ответ 3

String.format("%1$s FOO %1$s %1$s", "test");