How can I split strings separated by \"/\" inside a jsp page using JSTL?
I have a string in this format: **
\"23/11/2010\"
It's worth noting for anyone else who finds this question in their searching (as I did) that JSTL has the useful tag <c:forTokens>
.
This will split the input string by a supplied delimiter and then iterate over the resultant collection of tokens.
As demonstrated here, the following code:
<c:forTokens items="A,B,C,D" delims="," var="mySplit">
<c:out value="${mySplit}"/></br>
</c:forTokens>
Would result in:
A
B
C
D
Documentation: JSTL core Tag forTokens
Use the JSTL fn library. They have a split in there.
You can use the fn:split() function for this.
<%@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]}" />
Be sure that the date format is validated beforehand :) It would be easier if it was a java.util.Date
, not a java.lang.String
. You could then use <fmt:formatDate> to format it to a reliable and fixed string format first. Otherwise you'd need to add checks on array length by fn:length() and to prevent potential XSS attack holes by fn:escapeXml().
Also important to note is that the function takes a regular expression as argument and not just a plain character sequence. So in case you'd like to split on characters which represent special characters in regex, then you'd need to escape them with backslashes. See also How to split a string in Java for general guidelines which also apply to fn:split()
.