有没有一种简单的方法来去除换行符但 而不是 压缩空格?

<@compress> directive 两者都做,这不是我想要的。

我在这样的循环中有一个部分:

<#list items as item>
 * <#if something>${something?right_pad(10)}<#else>${something_else?right_pad(10)}</#if><#if another_thing>${more_data?right_pad(20)}<#else>${even_more_data?right_pad(20)}</#if>
</#list>

这使得一些非常长的线路,我非常喜欢做这样的事情:
<#list items as item>
 * <#if something>
       ${something?right_pad(10)}
   <#else>
       ${something_else?right_pad(10)}
   </#if>
   <#if another_thing>
       ${more_data?right_pad(20)}
   <#else>
       ${even_more_data?right_pad(20)}
   </#if>
</#list>

但似乎没有一种简单的方法可以消除此处为清晰起见给出的间距的歧义,我想使用 right_pad 输出间距。

最佳答案

你至少有两个选择:

1)使用注释掉的空格:

<#list items as item>
 * <#if something><#--
       -->${something?right_pad(10)}<#--
   --><#else><#--
       ${something_else?right_pad(10)}<#--
   --></#if><#--
   --><#if another_thing><#--
       -->${more_data?right_pad(20)}<#--
   --><#else><#--
       -->${even_more_data?right_pad(20)}<#--
   --></#if>
</#list>

2) 使用 (不带换行符的当前行左修剪)或/和 (带新行符的当前行右修剪)
<#list items as item>
 * <#if something><#rt>
       ${something?right_pad(10)}<#lt><#rt>
   <#else><#lt><#rt>
       ${something_else?right_pad(10)}<#lt><#rt>
   </#if><#lt><#rt>
   <#if another_thing><#lt><#rt>
       ${more_data?right_pad(20)}<#lt><#rt>
   <#else><#lt><#rt>
       ${even_more_data?right_pad(20)}<#lt><#rt>
   </#if><#lt>
</#list>

详情请查看:http://freemarker.org/docs/dgui_misc_whitespace.html

10-08 07:57