使用 Freemarker 仅打印 5 行,每行 32 个字符

Print only 5 line of each having 32 chars using Freemarker

如何使用 Freemarker 仅打印 5 行,每行 32 个字符。目前我有以下解决方案。有没有更好的方法来使用 split 或 substring

      <#assign msg="Tell FreeMarker to convert string to real date-time value Convert date-time value to date-only value Let FreeMarker format it according the date_format setting">
      <#assign len=msg?length>
      <#list 1..5 as i>
         <#assign start=(i-1)*32>
         <#assign end=i*32>
           <#if (end <len)>   
${msg[start..end]}
           <#else>
${msg[start..len-1]}
           </#if>
       </#list>

结果是

Tell FreeMarker to convert string
g to real date-time value Convert
t date-time value to date-only va
alue Let FreeMarker format it acc
cording the date_format setting

像这样:

<#list msg?matches(".{1,32}")[0..*5] as row>
  ${row}
</#list>

请注意,如果长度小于您要求的长度,“长度限制范围”运算符 ..* 不会报错。因此,即使使用您的方法,您也可以删除 end 赋值和 #if/#else,而只需使用 ${msg[start..*32]}.