20

如何使用 JSTL 在 jsp 页面中拆分由“/”分隔的字符串?

我有一个这种格式的字符串:**

“2010 年 11 月 23 日”

* . 有时,字符串可能是这样的:*

“2010 年 1 月 1 日”

* . 我需要做一些事情才能将字符串拆分为三个不同的子字符串:*

“23”、“11”、“2010”。

** 这是因为我需要将它们中的每一个放在三个不同的文本字段中,如下所示:

<input type="text" value="23">/
<input type="text" value="11">/
<input type="text" value="2010">

我还找不到任何工作示例。

提前致谢!

4

3 回答 3

51

您可以为此使用该fn:split()功能。

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<c:set var="dateParts" value="${fn:split(dateString, '/')}" />
...
<input type="text" name="day" value="${dateParts[0]}" />
<input type="text" name="month" value="${dateParts[1]}" />
<input type="text" name="year" value="${dateParts[2]}" />

确保事先验证日期格式:) 如果它是 ajava.util.Date而不是 a会更容易java.lang.String。然后,您可以<fmt:formatDate>先将其格式化为可靠且固定的字符串格式。否则,您需要添加对数组长度的检查,fn:length()并通过 防止潜在的 XSS 攻击漏洞fn:escapeXml()

还需要注意的是,该函数将正则表达式作为参数,而不仅仅是纯字符序列。因此,如果您想拆分代表正则表达式中特殊字符的字符,则需要使用反斜杠对其进行转义。另请参阅如何在 Java 中拆分字符串以获取同样适用于fn:split().

于 2012-04-24T18:57:38.263 回答
9

对于在搜索中发现此问题的其他人(就像我所做的那样),值得注意的是 JSTL 具有有用的标签<c:forTokens>。这将通过提供的分隔符拆分输入字符串,然后遍历生成的标记集合。

如此处所示,以下代码:

<c:forTokens items="A,B,C,D" delims="," var="mySplit">
   <c:out value="${mySplit}"/></br>
</c:forTokens>

会导致:

A
B
C
D

文档:JSTL 核心标记 forTokens

于 2016-03-22T17:26:50.853 回答
5

使用 JSTL fn 库。他们在那里有分歧

于 2012-04-24T18:56:39.683 回答