如果我们做 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/