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

标签 java printf

如果我们做 System.out.printf("%10s", "1"); 默认情况下,将添加空格字符以填充 10,对吗?有办法改变吗?

我知道,您可以通过在 s 之前指定 0 来添加 0,但是 printf 是否支持还要别的吗?

最佳答案

没有。空间是硬编码的。这是 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(' ', '#'));

关于java - 更改 Java printf 中的默认填充字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9997767/

相关文章:

java - Spring 3.x + SimpleJdbcTemplate : Returning multiple columns

java - 两个正在盘旋的圆圈的动画方法是什么?

c - 为什么我的程序将最后一个输入行打印两次?

c - 通过简单的函数调用将 32 位表示为 C 中的十六进制数

c - "fputs"和 "printf"之间的输出变化

c - fprint 不能在循环中工作

c - 在 C 中使用 printf 添加

java - 处理不可能发生的异常的最佳方法

java - 检查断裂线的数量,有时检查断裂线是否过多,然后仅用句号替换它

Java - 检测具有给定坐标的直线