Java格式输出到具有多个字符串值的Console / JTextArea

时间:2013-07-23 11:29:32

标签: java string swing format tabular

有一个程序,我想从数组中输出值。使用制表符(\ t)或格式化例如(%40s)不会占用不同长度的字符串。

标题下面的当前代码是好的。

    System.out.format("%s%40s%32s%32s%32s%32s\n","ID","NAME","SURNAME","POSITION","CONTACT","EMAIL");

但是,不适用于不同Lenths的值

我喜欢下面的内容 * **

Name         Surname         ID           Position
Joanne       Bassy           0000001      Manager
Mannnny      papsasjkasjnnxz 0000002      Boss

我虽然 * **

Name         Surname         ID           Position
Joanne       Bassy           0000001      Manager
Mannnny    papsasjkasjnnxz 0000002         Boss

1 个答案:

答案 0 :(得分:1)

更改格式字符串,如下所示:

  1. 将宽度说明符添加到第一个格式说明符以指定第一列的宽度
  2. 在所有格式说明符上添加-标记,以左对齐值
  3. 更新后的格式字符串为"%-40s%-40s%-32s%-32s%-32s%-32s\n"

    有关详细信息,请参阅Format String Syntax

    请注意,此解决方案有几个限制:

    • 仅在使用固定宽度字体
    • 时才有效
    • 如果任何字符串长度超过提供的宽度,它将推出该行的其余部分,列不会排列。
    • 用户将无法轻松操作数据(列宽,列顺序,排序顺序)
    • 用户将无法轻松复制输出并直接粘贴到电子表格中。

    替代方案包括

    • 使用JTable,这会更灵活,但这需要更多编码。
    • 使用\t分隔字段而不是用空格填充。此选项允许复制到电子表格中,但仍有其他限制,如果列值不是全部大致相同,则可能更难排列。