如何使用String.format()实现字符串左对齐?

62
我正在使用Java中的String.format()方法,尝试模拟C语言中可用的printf()控制通道。我知道如何指定应将字符串放置在占20个字符、5个字符、2个字符等具有3位小数、2位小数等字段中,但是这些字符串默认会靠右对齐。
如何才能将字符串左对齐?
以下是一个可能的输出示例,我希望修改左对齐“ EXECUTING”和“ CREATED ”它们在各自的字段中。
Process PID: 25    Status: -----------       EXECUTING
Process PID: 36    Status: READY-SUSPENDED
Process PID:  4    Status: ----------------        CREATED

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

3个回答

116
与printf相同的方法--在格式中使用-修饰符。

2
如果您正在使用位置指示符,则可以使用String.format("%1$-10s", "test") - jff
1
你能在你的回答中包含一个例子吗? - Peter Mortensen

8
System.out.format("%-10d%-32s%-16s%-16s%-32s", obj.getId(), obj.getBname(), obj.getAname(),obj.getLanguage(),obj.getPublication());

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


0

像这样吗?

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

9
这不是左对齐的,需要使用“-”符号才能实现。 - AHungerArtist
1
System.out.printf("进程 PID:%5d 状态:%s\n", pids[i++], s); - Sagar Devkota

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接