JSTL 拆分保留空白或空字符串

JSTL split keep blank or empty strings

我正在尝试对包含“|”的字符串使用 JSTL 拆分作为分隔符。但是,如果两者之间没有值,则拆分将在最终数组中忽略它。

例如:abc|def||jkl

我希望数组包含(4 项) 'abc; 'def' '' 'jkl'

但是,拆分会跳过空值,我只得到 3 个项目。

我知道在js中我们可以加上-1参数来避免这个问题。我们如何在 JSTL 中解决这个问题?

如有任何帮助,我们将不胜感激。

根据 the specificationfn:split 内部使用 StringTokenizer,因此行为与 StringTokenizer 相同。

所以我觉得只靠JSTL很难实现。一种可能的解决方案是使用 java.lang.String.split()。例如下面的代码:

<% request.setAttribute("strings", "abc|def||jkl".split("\|")); %>
<c:forEach var="string" items="${strings}" varStatus="status">
<c:out value="${status.index}"/>:<c:out value="${string}"/>
</c:forEach>

打印出来:

0:abc 1:def 2: 3:jkl