Reuse a parameter in String.format?

前端 未结 4 850
南笙
南笙 2020-12-07 11:14
String hello = \"Hello\";

String.format(\"%s %s %s %s %s %s\", hello, hello, hello, hello, hello, hello);

hello hello hello hello hello hello 

Do

4条回答
  •  轮回少年
    2020-12-07 11:25

    One common case for reusing an argument in String.format is with a separator (e.g. ";" for CSV or tab for console).

    System.out.println(String.format("%s %2$s %s %2$s %s %n", "a", ";", "b", "c"));
    // "a ; ; ; b"
    

    This isn't the desired output. "c" doesn't appear anywhere.

    You need to use the separator first (with %s) and only use the argument index (%2$s) for the following occurences :

    System.out.println(String.format("%s %s %s %2$s %s %n", "a", ";", "b", "c"));
    //  "a ; b ; c"
    

    Spaces are added for readability and debugging. Once the format appears to be correct, spaces can be removed in the text editor:

    System.out.println(String.format("%s%s%s%2$s%s%n", "a", ";", "b", "c"));
    // "a;b;c"
    

提交回复
热议问题