JSTL自定义lastIndexOf方法

本文介绍如何自定义JSTL中的lastIndexOf函数,通过创建Java类和TLD文件,实现对字符串中指定子串最后一次出现位置的查找,适用于文件后缀名的获取等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSTL的fn标签中只有indexOf()方法,然而有时我们需要用到lastIndexOf(),比如取文件后缀时。

自定义标签方法其实可以参考JSTL自带的fn标签方法是如何定义的。

1. 创建一个java类

public class Functions {
    public static int lastIndexOf(String input, String substring) {
        if (input == null) input = "";
        if (substring == null) substring = "";
        return input.lastIndexOf(substring);
    }
}

2. 创建一个tld文件

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  version="2.0">
  
  <description>JSTL 1.1 functions library</description>
  <display-name>JSTL functions</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>mfn</short-name>
  <uri>/WEB-INF/mfn.tld</uri>
  
  <function>
    <description>
      Returns the index withing a string of the last occurrence of a specified substring.
    </description>
    <name>lastIndexOf</name>
    <function-class>第一步所建类的完整路径</function-class>
    <function-signature>int lastIndexOf(java.lang.String, java.lang.String)</function-signature>
    <example>
      ${mfn:lastIndexOf(url, ".")}
    </example>
  </function>
  
</taglib>

将创建好的mfn.tld文件放在WEB-INF目录下 。

3. 在jsp页面使用

首先需要引入<%@ taglib prefix="mfn" uri="/WEB-INF/mfn.tld"%>

使用:${mfn:lastIndexOf("我是文件.doc", '.')}

如果是截取后缀名,则需要配合fn标签使用,引入<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

使用:${fn:substring("我是文件.doc", mfn:lastIndexOf("我是文件.doc", '.'), fn:length("我是文件.doc"))}

当然,你还可以使用<c:set var="url" value="我是文件.doc" />存起来然后

使用:${fn:substring(url, mfn:lastIndexOf(url, '.'), fn:length(url))}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值