更改Java printf中的默认填充字符?

use*_*454 6 java printf

如果我们System.out.printf("%10s", "1");默认使用,则会添加空格字符以填入10,对吧?有没有办法改变这个?

我知道,您可以0通过0在之前指定添加s,但是printf支持其他任何内容吗?

ɲeu*_*urɳ 9

不.空间是硬编码的.这是java.util.Formatter源码的片段,甚至:

private String justify(String s) {
    if (width == -1)
    return s;
    StringBuilder sb = new StringBuilder();
    boolean pad = f.contains(Flags.LEFT_JUSTIFY);
    int sp = width - s.length();
    if (!pad)
    for (int i = 0; i < sp; i++) sb.append(' ');
    sb.append(s);
    if (pad)
    for (int i = 0; i < sp; i++) sb.append(' ');
    return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)

如果你想获得一个不同的填充,你可以做一个后格式替换或类似的东西:

System.out.print(String.format("%10s", "1").replace(' ', '#'));
Run Code Online (Sandbox Code Playgroud)