2017-07-12 3 views
1

Ich versuche JSTL Split auf eine Zeichenfolge zu verwenden, die '|' als Begrenzer. Wenn jedoch kein Wert dazwischen liegt, wird dies im endgültigen Array durch die Teilung weggelassen.JSTL-Split bleibt leer oder leere Strings

zB: abc | def || jkl

ich möchte das Array (4 Beiträge) enthalten ‚abc; ‚def‘ ‚‘ ‚jkl‘

aber, die Spaltung des leeren Wert überspringt und ich bekomme nur 3 Artikel.

Ich weiß in js können wir den -1-Parameter hinzufügen, um dieses Problem zu vermeiden. Wie lösen wir das in JSTL?

Jede Hilfe hier würde sehr geschätzt werden.

Antwort

0

Entsprechend the specification, fn:split intern verwendet StringTokenizer und daher ist das Verhalten identisch mit StringTokenizer.

Also ich denke, es ist schwierig, nur von JSTL zu implementieren. Eine mögliche Lösung ist die Verwendung von java.lang.String.split(). Zum Beispiel der folgende Code:

<% 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> 

druckt:

0:abc 1:def 2: 3:jkl 
+0

Vielen Dank für die Antwort. Wie kann ich dies erreichen, wenn die zu teilende Zeichenfolge ein Array von JSTL ist. ich diesen ändern möchten wo Elemente das Array ist. Ich kann das nicht tun, da das unten ein Scriptlet ist und die Items noch nicht definiert sind. <% request.setAttribute ("listItem", items.split ("\\")); %> – calculus

+0

egal, ich habe es so gelöst <% String items = (String) pageContext.getAttribute ("items"); request.setAttribute ("listItem", items.split ("\\ |", - 1)); %> Danke für die Hilfe. – calculus

+0

ich fühle immer noch JSTL benötigt die Option -1 wie in Java. – calculus