在Thymeleaf中按顺序字符拆分字符串

问题描述

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

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文档没有帮助,所以我在这里问。

解决方法

理想情况下,您应该使用Java进行拆分,然后将数组传递给Thymeleaf。但这听起来好像您希望最小化更改。因此,您可以使用类似以下的内容:

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

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

这将在您的${strarray}中产生以下4个项目:

string 1
string : 2
string -3
string 4

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