一尘不染

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

javascript

如果我们System.out.printf("%10s", "1");默认执行此操作,则会添加空格字符以填充10,对吗?有办法改变吗?

我知道,您可以0通过0在之前指定来添加s,但是还printf支持其他功能吗?


阅读 375

收藏
2020-09-25

共1个答案

一尘不染

不。空间是硬编码的。这甚至是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();
}

如果您希望获得不同的填充,可以执行后格式替换或类似的操作:

System.out.print(String.format("%10s", "1").replace(' ', '#'));
2020-09-25