Java 如何格式化包含多个占位符和一个值的字符串

Java 如何格式化包含多个占位符和一个值的字符串,java,string-formatting,Java,String Formatting,我有一个可以更改的字符串模板,并且我只想在所有占位符中插入一个值。例如: String str = "He%s%so, wor%sd"; String value = "L"; 我知道我下一步可以做: String.format(str, value, value, value); 但是如果这个字符串改变了,我如何在不改变代码的情况下格式化它呢 只需使用%1$s而不是像这样使用%s: String str = "He%1$s%1$so, wor%1$sd"; String value = "

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

String str = "He%s%so, wor%sd";
String value = "L";
我知道我下一步可以做:

String.format(str, value, value, value);

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

只需使用%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
实际上,您可以使用%2、%3。。。要指定参数的索引,请执行以下操作:

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

这背后有现实的情况吗?因为如果您更改字符串,那么您将同时更改参数。除非你从某处获得字符串作为输入,否则我会仔细看看你想如何设计你的程序。关于
str.replace(“%s”,value)
Ah,我只是忘记了这一点:)@Kayaman是的,我从资源文件中获得字符串作为输入。非常感谢!我已经认为string.replace是一个解决方案。我不知道String.format中的此功能。另外,感谢您对%2、%3。。