【问题标题】:Freemarker - Check if list contains only empty StringsFreemarker - 检查列表是否仅包含空字符串
【发布时间】:2019-11-02 10:37:37
【问题描述】:

我有一个列表,可能只有空字符串。

我的目标是创建一个 if 原因,我可以在其中识别列表是否仅包含空字符串。

当我尝试时:

    if list?size gt 0, 

我总是进入 if 循环,因为列表不是空的,它包含空字符串。

这里是一个例子:

所有字符串都可以为空 ("")。

    <#assign list = [string1, string2, string3, string4, string5]>

    <#if list contains not only empty strings >

    do some things 

    </#if>

输出应该是:只进入if循环,当list不只包含空字符串时。

有谁知道这如何工作? (无需遍历整个列表并检查每个字符串)

【问题讨论】:

    标签: freemarker


    【解决方案1】:

    但是,您必须浏览整个列表,至少从 FreeMarker 2.3.28 开始。为它写一个函数:

    <#function containsNonEmpty ls>
      <#list ls as i>
        <#if i != ''>
          <#return true>
        </#if>
      </#list>
      <#return false>
    </#function>
    

    也许您真正想要的是删除空元素,即使并非所有元素都是空的。然后检查列表是否为空。在 2.3.29 中,您将能够为此使用 myList?filter(s -&gt; s != '')。

    【讨论】:

      【解决方案2】:

      你必须使用?has_content检查这个document

      <#assign list1 = ["", " ", "s"]>
      
          <#list list1 as list>
          <#if list?has_content >
                  ${list}
      
          </#if>
      
          </#list>
      

      输出将是:s

      【讨论】:

        猜你喜欢
        • 2011-01-25
        • 1970-01-01
        • 1970-01-01
        • 2010-12-19
        • 1970-01-01
        • 1970-01-01
        • 2011-01-03
        相关资源
        最近更新 更多