如何在Java中的文本字段中格式化输出?

时间:2013-07-10 16:59:23

标签: java string-formatting

我将文字附加到文本字段。由于某些州名称较长,因此列不是 格式很好。我该怎么办?

...
_result.append(text+"\n");

看起来像:

Alabama       1900       Birmingham       Wide-Awake       1
District of Columbia       1901       Birmingham       Wide-Awake       40
Illinois       1900       Blakeley       Blakeley Sun       10
Colorado       1901       Blakeley       Blakeley Sun       20
West Virginia       1900       Cahawba       Alabama Watchman       30
Alabama       1901       Cahawba       Alabama Watchman       50

2 个答案:

答案 0 :(得分:1)

您可能需要根据列中最长的字符串添加制表符。像这样:

// add a tab(s) after each column value
_result.append(columnFiled +"\t");

//Finally add a new line
_result.append("\n");

答案 1 :(得分:1)

您可以使用Formatter Class格式化给定格式的字符串。这允许您指定格式说明符,通过它可以设置每个参数的宽度。通过这样做,您可以正确对齐列。

String[][] stateInfo = new String[][]{
                        {"Alabama", "1900", "Birmingham", "Wide-Awake", "1"},
                        {"Illinois", "1900", "Blakeley", "Blakeley Sun", "10"}};
for (String[] si: stateInfo){
    String s = String.format("%1$-12s %2$-5s %3$-12s %4$-12s %5$-2s ",
                                    si[0],si[1],si[2],si[3],si[4]);
    System.out.println("String:"+s);
}

格式为%1s:

  

's','S'=如果参数arg为null,则结果为“null”。如果arg实现了Formattable,则调用arg.formatTo。否则,通过调用获得结果   arg.toString()。

     

“ - ”=结果将是左对齐的。

有关支持的其他格式,请参阅Formatter Class中的文档。