我有这样的东西:
22-04-19 20:34:00 !颜色:蓝色!制造商:福特!席位::4 !Climatronic:是的
我想获得类别的名称及其值(category::value)。
问题是这些位置(category::value)可以移动位置。ForTokens的索引在这里不是很好,因为它可以是一个或10个不同的令牌。
<c:if test="${fn:contains(dataset, 'Color')}">
<c:set var="color1" value="${fn:substringAfter(dataset, 'Color::')}" />
<c:set var="color2" value="${fn:substringBefore(color1, '!')}" />
</c:if>
这样的东西也不会工作,因为它会打印出相同的值,直到新的出现(将填写所有空单元格)。我没主意了。
您可以拆分初始字符串并在每个项目上循环查找所需的类别:
<c:set var="string1" value="22-04-19 20:34:00!Color::blue!Manufacturer::Ford!Seats::4!Climatronic::yes" />
<c:set var="categories" value = "${fn:split(string1, '!')}" />
<c:forEach var="category" items="${categories}" varStatus="status" >
<c:if test="${status.index != 0}">
<c:set var="decodedCategory" value="${fn:split(category,'::')}" />
Category: <c:out value="${decodedCategory[0]}" />
Value: <c:out value="${decodedCategory[1]}" />
<br />
</c:if>
</c:foreach>