`

自定义标签实现字符串截取功能

阅读更多
第一步:编写java代码继承SimpleTagSupport类并重写父类的方法doTag(),该方法是关键,然后定义2个属性str(需要被截取的字符串),len(需要截取的长度。
package tag;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;


public class MyTag extends SimpleTagSupport {

	private String str;
	private int len;
	
	public String getStr() {
		return str;
	}

	public void setStr(String str) {
		this.str = str;
	}

	public int getLen() {
		return len;
	}

	public void setLen(int len) {
		this.len = len;
	}

	@Override
	public void doTag() throws JspException, IOException {
		JspWriter out = this.getJspContext().getOut();
		StringBuilder sb = new StringBuilder();
		
		String temp = subStr(str,len);
		
		sb.append(temp);
		
		out.write(sb.toString());
		System.out.println(sb.toString());
	}

	public static void main(String[] args) {
		try {
			System.out.println(new MyTag().subStr("a的a飞z好d吧d吗", 7));
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}
	
	/** 
	    * 将给定的字符串按着给定的截取长度截取 
	    * <br> 
	    * 注意一个汉字占2个字节 
	    * @param str 
	    * @param subSLength 
	    * @return 截取后的字符串 
	    * @throws UnsupportedEncodingException  
	    */  
	   public String subStr(String str, int subSLength)  
	           throws UnsupportedEncodingException{ 
	       if (str == null)  
	           return "";  
	       else{ 
	           int tempSubLength = subSLength;//截取字节数
	           String subStr = str.substring(0, str.length()<subSLength ? str.length() : subSLength);//截取的子串  
	           int subStrByetsL = subStr.getBytes("GBK").length;//截取子串的字节长度  
	           // 说明截取的字符串中包含有汉字  
	           while (subStrByetsL > tempSubLength){  
	               subStr = str.substring(0, --subSLength);  
	               subStrByetsL = subStr.getBytes("GBK").length;
	           }  
	           return subStr; 
	       }
	   }
}


第二步:编写tag.tld文件并将其放在WEB-INF目录下,如下所示

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

<taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
    
  <tlib-version>1.0</tlib-version>
  <short-name>mytag</short-name>
  <uri>/WEB-INF/tag.tld</uri>

  <tag>
    <name>page</name>
    <tag-class>tag.MyTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
        <name>str</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
        <type>java.lang.String</type>
    </attribute>
    <attribute>
        <name>len</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
        <type>java.lang.Integer</type>
    </attribute>
  </tag>

</taglib>


第三步:使用标签,如下

<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="/WEB-INF/tag.tld" prefix="mytag"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>首页</title>
  </head>
  
  <body>
    <mytag:page len="8" str="a的a飞z好d吧d吗"></mytag:page>
  </body>
</html>
分享到:
评论

相关推荐

    较复杂的字符串截取函数SenFe_Cut

    "盛飞字符串截取函数",即SenFe_Cut,是为了解决特定字符串截取问题而设计的一个自定义函数。这个函数的主要功能是从左向右根据用户指定的首尾字符串来截取中间的内容,适用于那些内置字符串截取函数无法满足需求的...

    日期 字符串截取 格式化 标签

    对于字符串截取,可能需要用到`substring()`方法或者正则表达式,比如`String.split()`。 格式化则是将日期时间对象转换成特定格式的字符串,便于阅读或存储。例如,将日期时间对象转换为"YYYY年MM月dd日 HH:mm:ss...

    jsp页面字符串截取,点击弹出弹出层

    结合标签"源码",可能意味着这篇博文详细解释了如何使用源代码实现这些功能,包括自定义的字符串截取函数、点击事件处理和Base64编码解码。"工具"标签则可能暗示了博主分享了一些实用的工具或者技巧,帮助读者更有效...

    虚拟仪器第五次作业 字符串数组的连接,截取,插入,显示

    2. **字符串截取**:LabVIEW提供了多种方法进行字符串截取。例如,“子字符串”函数允许我们从一个字符串中提取一部分。它需要三个输入:原始字符串、起始位置和长度。起始位置通常为0开始,表示从字符串的第一个...

    C#中按字符串截取长字符串实例

    本实例讲解了如何在C#中利用正则表达式来实现按字符串截取长字符串,从而提高代码的灵活性和效率。 在C#的标准库中,`string`类提供了许多方便的方法,如`Split`,用于根据指定的字符或字符数组将字符串分割成多个...

    php对包含html标签的字符串进行截取的函数分享

    在这种情况下,标准的字符串截取函数(如`substr`)可能会导致HTML结构的破坏,因为它们不会考虑标签的开启和关闭。为了解决这个问题,我们可以使用自定义的函数来截取并正确处理包含HTML的字符串。这里介绍的`cut_...

    asp CutStrX字符串截取函数(过滤全部HTML标记)

    总结来说,ASP CutStrX字符串截取函数是一个实用的自定义函数,它不仅能够根据指定长度截取字符串,还能有效过滤字符串中的HTML标签,这对于生成或处理网页内容尤为重要。通过掌握该函数的工作原理和实现技术,...

    一个截取字符串的小例子(全部源码)

    标题中的“一个截取字符串的小例子(全部源码)”表明这是一个关于字符串处理的编程示例,提供了完整的源代码供学习者...学习这个示例,你可以了解如何在Pascal环境下创建GUI应用程序,以及如何实现字符串处理功能。

    PHP 计算字符串长度

    ### 字符串截取和长度检查 在处理字符串时,我们经常需要截取部分字符串或检查其是否超过特定长度。`substr()`函数可用于截取字符串: ```php $str = "这是一段示例文本"; $substring = substr($str, 0, 5); // ...

    工具类_字符串处理

    例如,Java中的`java.util.StringBuilder`和`java.util.StringBuffer`就是两个常用的字符串操作工具类,它们提供了字符串拼接、替换、查找等多种功能,并且在多线程环境下,`StringBuffer`比`StringBuilder`更安全,...

    字符串 省略号 适配

    1. **String类的substring方法**:这是基础的字符串截取方法,通过指定开始和结束索引,可以获取字符串的一部分。例如,`str.substring(startIndex, endIndex)`。在适配时,我们可能需要找到合适的截取位置,确保...

    自定义标签

    本文将深入探讨MetInfo中的自定义标签功能及其应用方式。MetInfo是一款基于PHP+MySQL开发的内容管理系统(CMS),广泛应用于企业网站建设和信息发布等领域。其强大的自定义标签功能使得开发者能够更加灵活地控制页面...

    文本框指定字符串长度

    标题“文本框指定字符串长度”和描述“ios限制uitextfield字符长度”所指的就是如何在iOS中设置`UITextField`的字符限制。 首先,我们可以使用`UITextField`的代理方法来实现这一功能。`UITextField`遵循`...

    asp下实现字符串的补充fill()

    标题所涉及的知识点是ASP(Active Server Pages)编程中实现字符串补充的方法,具体而言,是通过编写自定义函数来实现对一个给定字符串的前后或某一边的填充。这里的填充是通过在指定字符串的前后添加另一个字符串来...

    常用的字符串处理 方法

    在提供的文件`StringEx.h`和`StringEx.cpp`中,很可能包含了实现这些字符串处理功能的类或函数。通常,这样的库会提供一些自定义的方法,比如`extractBeforeDelimiter()`, `extractAfterDelimiter()`, `...

    JAVA实现html转义字符及css清除_.docx

    * 将字符串截取指定长度 * @param args 输入的字符串 * @param maxSize 最大长度 * @param replace 超过最大长度时添加的字符串 * @return String 处理后的字符串 */ public static String clearHTMLToSize...

    A simple C string lib.zip

    8. 字符串截取:提取字符串的一部分,如`str_substring`。 9. 字符串清理:释放字符串所占用的内存,类似`free`。 标签为空,说明没有提供额外的分类信息,但我们可以根据C语言字符串库的常见功能来推测其内容。 ...

    php读取html并截取字符串的简单代码

    ... #### 文件获取与编码转换 ...需要注意的是,由于网页的编码可能与服务器...无论是简单的字符串截取还是更复杂的cURL请求,都能满足实际项目的需求。开发者可以根据自己的具体应用场景选择合适的方法来实现所需功能。

    DEDE超级标签详解

    4. 数据过滤与处理:DEDE超级标签支持字符串截取、替换、连接等操作,如`{dede:field.content cut='20'/}`截取内容前20个字符。 四、DEDE超级标签的进阶应用 除了基础功能,DEDE超级标签还可以结合PHP、JavaScript...

Global site tag (gtag.js) - Google Analytics