以 Table 格式将列表打印到控制台

Print List to console in Table format

我正在寻找可以将列表以表格格式输出到控制台的 Freemarker 模板。

<#list ["foo", "bar", "baz", "huhu", "lala", "keke", "koko", "fifi", "bubu"] as x>
${x}
</#list>

我正在寻找如下控制台输出:

foo      bar      baz
huhu     lala     keke
koko     fifi     bubu

我认为 ${x?item_cycle('col1', 'col2', 'col3')} 也许可以,只为 col3 项添加换行符。但是如果 item_cycle?

上的 if else 逻辑我该怎么办

最好的添加换行符的方法可能是 ?chunk(n)。此外,例如可以使用 ?right_pad(n) 确保列宽(您没有询问过)。所以例子是:

<#list ["foo", "bar", "baz", "huhu", "lala", "keke", "koko", "fifi", "bubu"]?chunk(3) as row>
  <#list row as x>${x?right_pad(10)}</#list>
</#list>

顺便说一句,正如你所问的,你当然可以写 <#if x?item_cycle(...) == ...>,甚至 ${x}${x?item_cycle('', '', '\n')},或 <#if x?item_count % 3 == 0>,但这些都是更丑陋的解决方案。