繁体   English   中英

Thymeleaf:检查列表是否包含包含 substring 的字符串

[英]Thymeleaf: Check if list contains a string containing a substring

我有一个需要在 Thymeleaf 中进行的组合检查:

  • 列表包含一个项目 - 如果您知道确切的字符串,可以像th:if="${#lists.contains(data, '...')}"那样完成
  • Item contains a substring -迭代时,可以像th:each="item: *{data}" th:if="${#strings.contains(item,'(')}"这样检查 substring “(”在列表的项目中

如果列表包含一个包含 substring "(" 的项目,我需要显示一个 UL 标签。没有迭代,只有这个组合条件。我如何在一行中实现它?

<ul th:if="..."> <!-- This must be a combined check, no iteration. I don't even want to output the UL if not satisfied -->
</ul>

您可以通过集合选择来完成此操作。 只需测试列表大小是否大于零。 这样的事情会起作用:

<ul th:if="${#lists.size(data.?[#strings.contains(#this,'(')]) GT 0}">

</ul>

假设您有一个这样的列表,用于测试:

List<String> data = Stream.of("abc", "d(ef", "ghi")
        .collect(Collectors.toList());

您可以使用以下内容:

<ul th:if="${#strings.contains( #strings.listJoin(data,'') ,'(')}">
    bazinga
</ul>

这首先将列表中的每个项目连接成一个字符串。

然后它检查该字符串是否包含任何(字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM