理解Java中的$格式字符串

and*_*and 76 java formatter

 StringBuilder sb = new StringBuilder();
 // Send all output to the Appendable object sb
 Formatter formatter = new Formatter(sb, Locale.US);

 // Explicit argument indices may be used to re-order output.
 formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
 // -> " d  c  b  a"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,为什么2附加到$?

Sve*_*hal 121

与以下2内容无关$:

  • %     =格式字符串的开头
  • 4$   =第四个参数('d')
  • 2     =宽度为2(右对齐)
  • s     = String的类型


Dav*_*ebb 47

2$意味着从列表中放入第二个参数.该$ 遵循其人数不得先于它.同样,4$手段在这里提出了第四个论点.

为了澄清,我们可以将%2$2s格式分解为其部分:

  • % - 表示这是一个格式字符串

  • 2$ - 显示第二个值参数应该放在这里

  • 2 - 格式长度为两个字符

  • s - 将值格式化为String

您可以在文档中找到更多信息.