【问题标题】:How can I left-align strings using String.format()?如何使用 String.format() 左对齐字符串?
【发布时间】:2011-06-21 01:38:24
【问题描述】:

我在 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

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

【问题讨论】:

    标签: java string alignment string.format


    【解决方案1】:
    System.out.format("%-10d%-32s%-16s%-16s%-32s", obj.getId(), obj.getBname(), obj.getAname(),obj.getLanguage(),obj.getPublication());
    

    只需在数字前添加连字符-

    【讨论】:

      【解决方案2】:

      像这样?

      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
      

      【讨论】:

      • 不过,这并不合理。这需要使用'-'。
      • System.out.printf("进程 PID: %5d 状态 : %s\n", pids[i++], s);
      【解决方案3】:

      与 printf 相同——在格式中使用 - 修饰符

      【讨论】:

      • 如果您使用的是位置说明符,String.format("%1$-10s", "test")
      • 你能在你的答案中加入一个例子吗?
      猜你喜欢
      • 1970-01-01
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 2012-11-28
      • 1970-01-01
      相关资源
      最近更新 更多