如何使用JSTL循环遍历字符串中的每个字符?

3
我该如何使用JSTL循环遍历字符串中的每个字符?
3个回答

11

使用 fn:substring() 的巧妙方法可以实现

<c:forEach var="i" begin="0" end="${fn:length(str)}" step="1">
    <c:out value="${fn:substring(str, i, i + 1)}" />     
</c:forEach>

很好 - 不确定有哪些可用的函数。 - Dave G
@Dave,你可以在javadoc上查看所有内容。 - jmj
我的意思是我没有立刻想起来,今天早上很忙,也没有查看参考文档 :-) - Dave G

1
晚来的消息,但是EL 2.2允许实例方法调用(更多信息请参见https://dev59.com/imw05IYBdhLWcg3wpDRu#7122669)。这意味着您可以通过几个字符来缩短Jigar Joshi的答案。
<c:forEach var="i" begin="0" end="${fn:length(str)}" step="1">
  <c:out value="${str.charAt(i)}" />     
</c:forEach>

我之所以建议这样做,是因为这样可以更明显地展示你的代码在做什么。

0

为什么不呢?我在这里看到了一个长度函数和一个子字符串函数。http://download.oracle.com/docs/cd/E17802_01/products/products/jsp/jstl/1.1/docs/tlddocs/fn/tld-summary.html - stivlo
fn:substring/fn:length仍然是EL函数! - Erhan Bagdemir
我认为将脚本片段与JSTL混合使用是不好的实践,而EL应该更加优雅。你的意思是EL并不严格属于JSTL吗? - stivlo
没错。在视图(JSP)中使用脚本片段甚至更糟糕。因此,您可以开发自己的自定义标签或EL函数。自定义JSTL标签示例:<mylib:forEachLetter str="Hello World"><c:out value="${currentLetter}"/></mylib:forEachLetter> - Erhan Bagdemir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接