Um caso comum para reutilizar um argumento em String.format
é com um separador (por exemplo, ";"
para CSV ou guia para console).
System.out.println(String.format("%s %2$s %s %2$s %s %n", "a", ";", "b", "c"));
// "a ; ; ; b"
Esta não é a saída desejada. "c"
não aparece em lugar nenhum.
Você precisa usar o separador primeiro (com %s
) e usar apenas o índice de argumentos (%2$s
) para as seguintes ocorrências:
System.out.println(String.format("%s %s %s %2$s %s %n", "a", ";", "b", "c"));
// "a ; b ; c"
Espaços são adicionados para facilitar a leitura e a depuração. Depois que o formato parecer correto, os espaços poderão ser removidos no editor de texto:
System.out.println(String.format("%s%s%s%2$s%s%n", "a", ";", "b", "c"));
// "a;b;c"