我有一个变量imageUrl
我正在拆分wrt .
并存储在数组imageUrlParts
中,如下所示:
<c:set var="imageUrlParts" value="${fn:split(imageUrl, '.')}" />
现在,我只想在其后的第二个标记上添加更多内容。例如,如果网址为a.b.c.d
,那么我想将其设为a.b.cSOMETHINGADDED.d
。所以我正在做以下事情:
<c:set var="len" value="${fn:length(imageUrlParts)}" />
<c:set var="imageUrlParts[len-2]" value="${imageUrlParts[len-2]}SOMETHINGADDED" />
<c:set var="imageUrl" value="${fn:join(imageUrlParts, '.')}" />
但它不起作用,因为它正在将其重建为a.b.c.d
本身和 NOT a.b.cSOMETHINGADDED.d
,这意味着以下行
<c:set var="imageUrlParts[len-2]" value="${imageUrlParts[len-2]}SOMETHINGADDED" />
不起作用(当然)。你能告诉我如何实现我想做的事吗?
任何形式的帮助都将受到高度赞赏。
答案 0 :(得分:0)
这是演示代码。如果您不想使用第一行,则必须将forEach标记代码放在一行上。这样可以避免输出String中的空格。
<%@ page trimDirectiveWhitespaces="true" %>
<%@ 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="imageUrl" value="a.b.c.d" />
<c:set var="imageUrlParts" value="${fn:split(imageUrl, '.')}" />
<c:set var="len" value="${fn:length(imageUrlParts)}" />
<c:forEach var="part" items="${imageUrlParts}" varStatus="status">
${part}
<c:if test="${(len -1) == status.count}">SOMETHINGADDED</c:if>
<c:if test="${!status.last}">.</c:if>
</c:forEach>