String hello = "Hello";
String.format("%s %s %s %s %s %s", hello, hello, hello, hello, hello, hello);
hello hello hello hello hello hello
hello变量是否需要在对format方法的调用中重复多次,或者是否有一个简写版本,允许您指定一次应用于所有%s
标记的参数?
答案 0 :(得分:225)
来自the docs:
常规,字符和数字类型的格式说明符具有以下语法:
%[argument_index$][flags][width][.precision]conversion
可选 argument_index 是十进制整数,表示参数列表中参数的位置。第一个参数由
"1$"
引用,第二个参数由"2$"
引用,等等。
String.format("%1$s %1$s %1$s %1$s %1$s %1$s", hello);
答案 1 :(得分:43)
另一个选择是使用 relative indexing :格式说明符引用与最后一个格式说明符相同的参数。
例如:
String.format("%s %<s %<s %<s", "hello")
结果为hello hello hello hello
。
答案 2 :(得分:8)
您需要使用以下参数来索引参数2 * abs(a.b)/(a**2 + b**2)
:
%[argument_index$]
结果:String hello = "Hello";
String.format("%1$s %1$s %1$s %1$s %1$s %1$s", hello);
答案 3 :(得分:4)
在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"