首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JSP 中截取字串前五個字元並加省略號的實作方式

     編輯:程式設計綜合問答

在 JSP 頁面使用 JSTL <c:forEach> 遍歷列表顯示標題時,需將超過 5 個中文字的標題截斷並顯示「...」。

原始資料結構

<c:forEach items="${list}" var="email">
  <tr><td> ${email.etile} </td></tr>
</c:forEach>

需求

  • 長度 > 5 字 → 顯示前 5 字 +「...」(如「阿賈克斯的用法」→「阿賈克斯的...」)
  • 長度 ≤ 5 字 → 完整顯示(如「三大框架」)

方案一:JSTL fn:substring (推薦,無需 Java 代碼)

<%@ taglib prefix="fn" uri="https://java.sun.com/jsp/jstl/functions" %>
<c:choose>
  <c:when test="${fn:length(email.etile) > 5}">
    ${fn:substring(email.etile, 0, 5)}...
  </c:when>
  <c:otherwise>
    ${email.etile}
  </c:otherwise>
</c:choose>

方案二:自定義 EL 函數 (可復用)

1. 編寫 Java 類

public class StringUtils {
    public static String truncate(String str, int len) {
        if (str == null) return "";
        return str.length() > len ? str.substring(0, len) + "..." : str;
    }
}

2. 定義 TLD 檔 (/WEB-INF/tlds/functions.tld)

<function>
  <name>truncate</name>
  <function-class>com.example.StringUtils</function-class>
  <function-signature>java.lang.String truncate(java.lang.String, int)</function-signature>
</function>

3. JSP 使用

<%@ taglib prefix="my" uri="/WEB-INF/tlds/functions.tld" %>
${my:truncate(email.etile, 5)}

方案三:Scriptlet (不推薦,混淆邏輯與視圖)

<%
  String title = email.getEtile();
  if (title.length() > 5) title = title.substring(0,5) + "...";
  out.print(title);
%>

建議

  • 優先使用 **JSTL fn:substring**,零 Java 代碼、標準庫支援、可讀性佳。
  • 專案多處需求時,封裝為自定義 EL 函數統一維護。
  • 注意中文字元在 UTF-8 下 substring 按字元而非位元組截取,Java 內部 char[] 正確處理 BMP 字元;涉及 Emoji (補充平面) 需用 codePointCount/offsetByCodePoints。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved