如何格式化具有多个占位符和一个值的字符串

Val*_* K. 4 java string-formatting

我有一个可以更改的字符串模板,并且只有一个值我想插入到所有占位符中。例如:

String str = "He%s%so, wor%sd";
String value = "L";
Run Code Online (Sandbox Code Playgroud)

我知道我下一步可以做:

String.format(str, value, value, value);
Run Code Online (Sandbox Code Playgroud)

但是如果这个字符串发生了变化,我如何在不更改代码的情况下格式化它呢?

yel*_*ver 6

只需使用%1$s而不是%s,如下所示:

String str = "He%1$s%1$so, wor%1$sd";
String value = "L";
System.out.println(String.format(str, value)); //HeLLo, worLd
Run Code Online (Sandbox Code Playgroud)

实际上,您可以使用 %2, %3... 来指定参数的索引:

System.out.println(String.format("%2$s --- %1$s", "A", "B")); //B --- A
Run Code Online (Sandbox Code Playgroud)