我正在尝试使用分割字符串。 (有空间的时期)但由于某种原因它在JSTL中起作用
input: This is a sample text. Just to check the split.
下面的语句使用句点(。)拆分值,因为分隔符按预期工作,
<c:set var="descArray" value="${fn:split(desc_highlighted,'.')}"/>
<c:forEach var="indexVal" items="${descArray}">
<c:set var="descValue" value="${descValue} ${indexVal} ."/>
</c:forEach
output: This is a sample text. Just to check the split.
如果我修改语句以匹配句点与空格(。),则句子在每个间距
上被拆分<c:set var="descArray" value="${fn:split(desc_highlighted,'. ')}"/>
<c:forEach var="indexVal" items="${descArray}">
<c:set var="descValue" value="${descValue} ${indexVal} ."/>
</c:forEach
output: This . is . a . sample . text . Just . to . check . the . split .
如果我做错了什么,有人可以告诉我吗?
答案 0 :(得分:1)
这里的问题是fn:split()
的第二个参数就像一个字符数组而不是字符串。因此,它会分割或这个空间,从而产生一个比你预期的更大的数组。处理此问题的一种方法是使用fn:replace()
将所有出现的". "
替换为单个字符。然后将返回的字符串传递给fn:split()
。此示例使用管道。
<c:set var="descArray"
value="${fn:split(fn:replace(desc_highlighted, '. ', '|'),'|')}"/>