首页 > 解决方案 > 在 Thymeleaf 中的连续字符上拆分字符串

问题描述

我正在使用 Thymeleaf 将字符串拆分为多个连续字符,但我看到的结果不是我所期望的。这是一些旧代码,我不想重写它(不是每个人都这么说吗?)。我转储了 Java 字符串,它看起来像这样:

string 1:-string : 2:-string -3:-string 4

然后我的代码使用

th:with="strarray=${#strings.arraySplit(inputString, ':-')}"

我想要的是一个带有 4 个元素的 strarray [string 1,string : 2,string -3,string -4] 但拆分似乎将字符串拆分为冒号或连字符,而不是 :- 作为连续字符。所以我的数组最终为 [string 1, string, : ,string ,3,string 4]。Thymeleaf 文档没有提供任何帮助,所以我在这里问。

标签: javascriptthymeleaf

解决方案


我会说理想情况下,您应该在 Java 中进行拆分,并将数组传递给 Thymeleaf。但这听起来好像您更愿意最小化更改。因此,您可以使用以下内容:

th:with="strarray=${#strings.arraySplit(#strings.replace(inputString, ':-', '~'), '~')}"

这会将每个符号替换:-为一个符号(在这种情况下~),然后继续拆分该单个符号。

这会在您的 中产生以下 4 项${strarray}

string 1
string : 2
string -3
string 4

当然这里的风险是你必须选择一个保证不会出现在原始字符串中的字符。


推荐阅读