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

标签 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. 向第一个格式说明符添加宽度说明符以指定第一列的宽度
  2. 在所有格式说明符上添加 - 标志以使值左对齐

更新后的格式字符串将为“%-40s%-40s%-32s%-32s%-32s%-32s\n”

请参阅Format String Syntax了解更多详情。

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

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

替代方案包括

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

关于具有多个字符串值的 Java 格式输出到 Console/JTextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17808942/

相关文章:

java - 在不同文件系统之间复制目录内容的干净方法?

java - 使用迭代器时获取特定索引

java - jackson 反序列化对象或数组

Java - 用反斜杠 (\) 分割字符串

java - Spring Boot中一个类的多个配置树

c# - DllImport 编码错误

java - 使用正则表达式分割字符在java中返回空值

java - JFrame 窗口不显示?

java - 将值保存在内存中并获取它

java - 如何在 Netbeans 中隐藏 jButton 事件方法