2012-04-24 26 views
17

如何拆分使用JSTL在jsp頁面內用「/」分隔的字符串?如何在JSTL中正確拆分字符串?

我在這個格式的字符串: **

「23/11/2010」

* 。有時,字符串可以是這樣的:*

「1/1/2010」

* 。 我需要做的事情,才能在三個不同的子字符串分割字符串: *

「23」, 「11」, 「2010」。

** 這是因爲我需要把他們中的每一個內三種不同的文本字段,像這樣的:

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

我找不到任何工作的例子呢。

在此先感謝!

回答

42

您可以使用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]}" /> 

確保日期格式預先驗證:)這將是更容易,如果它是一個java.util.Date,而不是一個java.lang.String。您可以使用<fmt:formatDate>將其格式化爲可靠且固定的字符串格式。否則,您需要在陣列長度上添加檢查fn:length(),以防止潛在的XSS攻擊漏洞fn:escapeXml()

+0

這是非常教學!謝謝BalusC ... – Lucas 2012-04-24 19:03:15

+0

不客氣。 – BalusC 2012-04-24 19:04:59

+1

我可以使用foreach嗎? – Wax 2016-08-14 21:40:59

7

值得注意的是,在他們的搜索中發現此問題的任何人(如我所做的那樣)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 core Tag forTokens