如何在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