有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

如果我们默认使用System.out.printf("%10s", "1");,那么空格字符将被添加到10中,对吗?有办法改变这一点吗

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


共 (2) 个答案

  1. # 1 楼答案

    没有。空间是硬编码的。下面是java的片段。util。格式化程序源:

    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();
    }
    

    如果你希望得到不同的填充,你可以做一个post格式替换或类似的事情:

    System.out.print(String.format("%10s", "1").replace(' ', '#'));
    
  2. # 2 楼答案

    你可以使用任何数字,比如:

    System.out.printf("%77s", "1");
    


    您可以使用format方法进行更多格式化,例如:

    System.out.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d");
    


    输出:d c b a