如何在Java中使用String.format()复制选项卡“ \ t”?


问题内容

我正在逐行打印数据,并希望像表一样组织数据。

我最初用过firstName + ", " + lastName + "\t" + phoneNumber

但是对于某些较大的名称,电话号码会被推离对齐状态

我正在尝试使用String.format()实现此效果。谁能告诉我使用的格式语法?

我尝试过String.format("%s, %s, %20s", firstName, lastName, phoneNumber),但这不是我想要的。我希望它看起来像这样:

约翰·史密斯123456789

鲍勃·麦迪逊123456789

查尔斯·理查兹123456789

编辑:这些答案似乎适用于System.out.println()。但是我需要它为JTextArea工作。我正在使用textArea.setText()

解决了。JTextArea默认情况下不使用等宽字体。我使用setFont()进行了更改,现在它就像一个符咒一样工作。谢谢大家的解决方案。


问题答案:

考虑为长度说明符使用负数:%-20s。例如:

   public static void main(String[] args) {
     String[] firstNames = {"Pete", "Jon", "Fred"};
     String[] lastNames = {"Klein", "Jones", "Flinstone"};
     String phoneNumber = "555-123-4567";

      for (int i = 0; i < firstNames.length; i++) {
        String foo = String.format("%-20s %s", lastNames[i] + ", " + 
             firstNames[i], phoneNumber);
        System.out.println(foo);
      }   
   }

退货

Klein, Pete          555-123-4567
Jones, Jon           555-123-4567
Flinstone, Fred      555-123-4567