Один из распространенных случаев повторного использования аргумента в String.format
- с разделителем (например, ";"
для CSV или вкладка для консоли).
System.out.println(String.format("%s %2$s %s %2$s %s %n", "a", ";", "b", "c"));
// "a ; ; ; b"
Это не желаемый вывод. "c"
нигде не появляется.
Сначала необходимо использовать разделитель (с %s
), а индекс аргумента (%2$s
) использовать только в следующих случаях:
System.out.println(String.format("%s %s %s %2$s %s %n", "a", ";", "b", "c"));
// "a ; b ; c"
Добавлены пробелы для удобства чтения и отладки. Как только формат окажется правильным, в текстовом редакторе можно удалить пробелы:
System.out.println(String.format("%s%s%s%2$s%s%n", "a", ";", "b", "c"));
// "a;b;c"