如果在String.format中多次使用相同的参数呢?
String hello = "Hello"; String.format("%s %s %s %s %s %s", hello, hello, hello, hello, hello, hello); hello hello hello hello hello hello
hellovariables是否需要在格式化方法的调用中重复多次,或者是否有一个简化版本,可以指定参数一次应用于所有%s
标记?
从文档 :
通用,字符和数字types的格式说明符具有以下语法:
%[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);
另一个select是使用相对索引 :格式说明符引用与最后一个格式说明符相同的参数。
例如:
String.format("%s %<s %<s %<s", "hello")
结果hello hello hello hello
。
在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"
为了便于阅读和debugging,添加了空格。 一旦格式看起来是正确的,可以在文本编辑器中删除空格:
System.out.println(String.format("%s%s%s%2$s%s%n", "a", ";", "b", "c")); // "a;b;c"