问题描述
我正在使用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
当然,这里的风险是您必须选择一个保证不会出现在原始字符串中的字符。