You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSP中如何仅按双连字符“--”拆分字符串?

解决JSP中按双连字符"--"拆分字符串时单"-"被误拆的问题

问题根源在于JSTL的fn:split方法是基于StringTokenizer实现的——它会把分隔符参数里的每个字符都当作独立分隔符,而非匹配完整字符串。所以传入"--"时,单个"-"也会触发拆分,导致"e-mail"这类字符串被错误拆分。

下面是两种可行的解决方法:

方案一:直接使用Java String的split()方法

EL表达式支持直接调用String类的split()方法,该方法基于正则表达式匹配完整字符串,能严格按"--"拆分,单个"-"不会被当作分隔符:

<c:forEach var="message" items="${tempMessage.split('--')}" varStatus="tempLoop">
    <!-- 在这里编写处理每个拆分后元素的逻辑 -->
</c:forEach>

如果原字符串不含"--",split("--")会返回仅包含原字符串的数组,遍历逻辑无需额外调整。

方案二:先判断再拆分(逻辑更清晰)

如果需要明确控制拆分触发条件,可以用fn:contains先判断字符串是否包含"--",再决定是否执行拆分:

<c:choose>
    <c:when test="${fn:contains(tempMessage, '--')}">
        <c:forEach var="message" items="${tempMessage.split('--')}" varStatus="tempLoop">
            <!-- 处理拆分后的元素 -->
        </c:forEach>
    </c:when>
    <c:otherwise>
        <!-- 直接处理原字符串(无--无需拆分) -->
        <c:set var="message" value="${tempMessage}" />
        <!-- 编写单个元素的处理逻辑 -->
    </c:otherwise>
</c:choose>

内容的提问来源于stack exchange,提问作者The big bakchod show

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:07:34