【问题标题】:How can I loop through each character in a String using JSTL?如何使用 JSTL 遍历字符串中的每个字符?
【发布时间】:2011-05-12 11:55:37
【问题描述】:

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

【问题讨论】:

    标签: java jsp jstl


    【解决方案1】:

    巧妙地使用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 你可以在javadoc查看所有内容
    • 我的意思是我不记得了,今天早上很忙,没有检查参考文档:-)
    【解决方案2】:

    迟到了,但 EL 2.2 允许调用实例方法(更多信息请参见:https://stackoverflow.com/a/7122669/2047962)。这意味着您可以将 Jigar Joshi 的答案缩短几个字符:

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

    我只是建议这样做,因为它更明显你的代码在做什么。

    【讨论】:

      【解决方案3】:

      我认为你不能用 JSTL 的 forEach 做到这一点。您需要编写自己的标签或 EL 函数。以下是您如何编写自定义标签的示例代码: http://www.java2s.com/Tutorial/Java/0360__JSP/CustomTagSupport.htm

      【讨论】:

      • 为什么不呢? download.oracle.com/docs/cd/E17802_01/products/products/jsp/…这里看到一个长度函数和一个子字符串函数
      • fn:substring/fn:length 仍然是 EL 函数!
      • 我认为将 scriptlet 与 JSTL 混合使用是不好的做法,而 EL 应该是优雅的。你的意思是 EL 不是严格意义上的 JSTL 的一部分吗?
      • 确实如此。在视图中使用 scriptlet (jsps) 是最糟糕的做法。因此,您可以开发自己的自定义标签或 EL 函数。自定义 JSTL 标签示例:
      猜你喜欢
      • 2021-01-11
      • 2019-10-14
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多