Java Table 显示的格式字符串:以 80 个字符换行

Java Format String for Table Display: Wrap at 80 chars

我需要以 table/grid 格式显示列表,因此我使用 String.format() 如下例所示, how to print object list to file with formatting in table format using java

我的问题是我需要将输出强制换行为 80 个字符。 table 的最大宽度为 80,任何进一步的输出必须在下一行继续。

这可能吗?

当前代码,未实现换行:

StringBuilder sbOutput = new StringBuilder();

sbOutput.append(String.format("%-14s%-200s%-13s%-24s%-12s", "F1", "F2", "F3", "F4", "F5"));
for (MyObject result: myObjects) {
    sbOutput.append(String.format("%-14s%-200s%-13s%-24s%-12s", result.getF1(),
      result.getF2(), result.getF3(), result.getF3(), result.getF4()));
}

您可以像这样每 80 个字符在字符串中插入一个换行符:

str.replaceAll(".{80}(?=.)", "[=10=]\n");

因此您的代码将变为:

sbOutput.append(String.format("%-14s%-200s%-13s%-24s%-12s", result.getF1(),
  result.getF2(), result.getF3(), result.getF3(), result.getF4())
    .replaceAll(".{80}(?=.)", "[=11=]\n"));

搜索正则表达式表示“后面有一个字符的 80 个字符”,替换中的 "[=12=]" 表示 "everything matched by the search"。

(?=.) 是一个前瞻性断言匹配后跟任何字符,这可以防止输出是 80 个字符的精确倍数,并在其后添加不必要的换行符。