60

我在 Java 中使用 String.format() 试图模拟 C 中可用的 printf() 控制通道。我了解如何指定一个字符串应该放在一个需要 20 个字符、5、2 ......的字段中3 位小数、2 位等。但是,字符串在其字段中右对齐打印。

如何左对齐字符串?

这是一个可能的输出示例,我想将其修改为左对齐EXECUTINGCREATED在其字段中。

Process PID: 25    Status: -----------       EXECUTING
Process PID: 36    Status: READY-SUSPENDED
Process PID:  4    Status: ----------------        CREATED

*注意:将“-”视为空白

4

3 回答 3

112

与 printf 一样——-在格式中使用修饰符

于 2011-02-04T00:23:05.297 回答
5
System.out.format("%-10d%-32s%-16s%-16s%-32s", obj.getId(), obj.getBname(), obj.getAname(),obj.getLanguage(),obj.getPublication());

只需-在数字前添加连字符即可。

于 2020-07-29T12:52:17.173 回答
1

像这样?

class F { 
  public static void main( String ... args ) { 
    String [] status =  { "EXECUTING", "READY-SUSPENDED", "CREATED" };
    int [] pids =  {123, 34, 1231 };
    int i = 0;
    for( String s : status ) { 
       System.out.printf("Process PID: %5d Status : %s%n", pids[i++], s);
    }  
  }
}

输出:

$java F
Process PID:   123 Status : EXECUTING
Process PID:    34 Status : READY-SUSPENDED
Process PID:  1231 Status : CREATED
于 2011-02-04T01:04:24.437 回答