使用 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]}
.
如何使用 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]}
.