【问题标题】:How to look for substring in a Freemarker array?如何在 Freemarker 数组中查找子字符串?
【发布时间】:2021-06-02 22:10:32
【问题描述】:

我正在尝试使用 FreeMarker 读取页面的 URL 以及其中是否包含特定单词。

<#assign
    my_page_urls = ["/foobar", "/foopub"]
    current_url = htmlUtil.escape(theme_display.getURLCurrent())
    is_my_page = my_page_urls?seq_contains(current_url)
/>

目前,它适用于上述 URL,但我很难找到子字符串,因为上述页面后面有 url 参数。例如。 /foobar?answer=true 不起作用。我知道contains 本身可以找到子字符串,但我有一个 URL 数组,我想知道是否有任何合理的、非循环的方式来做到这一点:)

【问题讨论】:

  • 我最终不需要答案,但我会留下问题,以防有人知道答案并且以后有人需要:)

标签: freemarker contains seq


【解决方案1】:

您可以将?filter 与任意复杂的谓词表达式结合使用,并结合?size != 0

is_my_page = my_page_urls?filter(it -> it?contains(current_url))?size != 0

当然,对于 URL 匹配,这将是一个相当幼稚的检查,并且您需要一个更复杂的谓词。

请注意,上述内容将在第一次匹配时停止处理,因为 FreeMarker 可以识别 ?filter(...)?size != 0 等用例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 2015-12-31
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 2019-10-01
    相关资源
    最近更新 更多