JSTL 拆分保留空白或空字符串
JSTL split keep blank or empty strings
我正在尝试对包含“|”的字符串使用 JSTL 拆分作为分隔符。但是,如果两者之间没有值,则拆分将在最终数组中忽略它。
例如:abc|def||jkl
我希望数组包含(4 项)
'abc;
'def'
''
'jkl'
但是,拆分会跳过空值,我只得到 3 个项目。
我知道在js中我们可以加上-1参数来避免这个问题。我们如何在 JSTL 中解决这个问题?
如有任何帮助,我们将不胜感激。
根据 the specification,fn: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
我正在尝试对包含“|”的字符串使用 JSTL 拆分作为分隔符。但是,如果两者之间没有值,则拆分将在最终数组中忽略它。
例如:abc|def||jkl
我希望数组包含(4 项) 'abc; 'def' '' 'jkl'
但是,拆分会跳过空值,我只得到 3 个项目。
我知道在js中我们可以加上-1参数来避免这个问题。我们如何在 JSTL 中解决这个问题?
如有任何帮助,我们将不胜感激。
根据 the specification,fn: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