`
yunfeiyang
  • 浏览: 32800 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自己写的标题截取长度加“...”显示标签

阅读更多

网络上的提供的大多数截取长度的方法放到jsp页面中总是感觉比较繁琐,参考网友的代码,自己写了一个标签,大家可以参考一下

 

 

package com.abc.zj.framework.tag;

import java.io.IOException;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import com.abc.zj.framework.action.BaseResultModel;

public class SubString extends TagSupport
{
 private String value;
 private int len;
 private String suffix;
 
    public int getLen() {
  return len;
 }

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

 public String getValue() {
  return value;
 }

 public String getSuffix() {
  return suffix;
 }

 public void setSuffix(String suffix) {
  this.suffix = suffix;
 }

 public void setValue(String value) {
  this.value = value;
 }

 public SubString()
    {
  value="";
  len=0;
  suffix= "";
    }

    public int doStartTag()
        throws JspException
    {
        return 0;
    }

    public int doEndTag()
        throws JspException
    {
        JspWriter out = super.pageContext.getOut();
        try
        {
         String temp = getLimitStr(value, len);
         if(value.equals(temp)){
          out.print(temp);
         }else{
          out.print(temp+suffix);
         }
        }
        catch(IOException e)
        {
            throw new JspException(e.getMessage());
        }
        catch(Exception e)
        {
            throw new JspException(e.getMessage());
        }
        return 6;
    }

 /**
  * 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,
  * 输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
  *
  * @param args
  */

 public static void main(String args[]) {
  String s = "一般收文单独:手工登记状态测试111111";
  int len = 40;
//  SplitStr(s, len);
  System.out.print(getLimitStr(s,len));
 }

 public static String getLimitStr2(String str, int len) {

  String result = "";
  char temp;
  // 取得的字节数
  int counter = 0;
  int i = 0;
  // 汉字个数
  int han = 0;

 

int strLen = str.getBytes().length;
  if(strLen<len){
   len = strLen;
  }
  while (counter < len) {
   temp = str.charAt(i);
   System.out.println(i);
   if (Character.getNumericValue(temp) != -1) {
    // 遇到字母的时候
    result = result + temp;
    counter++;
    i++;

   } else {
    // 遇到汉字的时候,作为unicode字符,汉字的整数值是-1
    result = result + temp;
    counter = counter + 2;
    i++;
    han = han + 1;
   }
  }

  if (counter > len) {
   if (len == 1) {
    result = "";
   } else {
    result = result.substring(0, counter - (han + 1));
   }
  }
  return result;
  //System.out.println("result       " + result);
 }
 
 
 public static String getLimitStr( String str,int len){
        try{
            if(str==null)     return"";        
            int counterOfDoubleByte = 0;
            byte[] b = str.getBytes("GBK");
           
            if(b.length <= len)
               return str;
           
            for(int i = 0; i < len; i++){          
                if(b[i] < 0)
                 counterOfDoubleByte++;
           }   
            if(counterOfDoubleByte % 2 == 0)
               return new String(b, 0, len, "GBK");
            else
               return new String(b, 0, len - 1, "GBK");
         }catch(Exception ex){      
        return"";
        }
    }
}

 

 

abc.tld

 

 

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

<!DOCTYPE taglib PUBLIC
    "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
    "http://java.sun.com/dtds/web-jsptaglibrary_1_2.dtd" >

<taglib>
 <tlib-version>1.0</tlib-version>
 <jsp-version>1.2</jsp-version>
 <short-name>abc Tags</short-name>
 <description>
  Tag Library of abc Web Application Framework
 </description>

 <tag>
  <name>page</name>
  <tag-class>com.abc.zj.framework.tag.Page</tag-class>
  <description>
   Render page navigation bar in jsp file.
  </description>
  <attribute>
   <name>formName</name>
   <required>false</required>
   <rtexprvalue>false</rtexprvalue>
  </attribute>
  <attribute>
   <name>className</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
  </attribute>
  <attribute>
   <name>noForm</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
   <type>java.lang.Boolean</type>
  </attribute>
 </tag>
  <tag>
  <name>subString</name>
  <tag-class>com.abc.zj.framework.tag.SubString</tag-class>
  <description>
   SubString for like abcdefg...
  </description>
  <attribute>
   <name>value</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
  </attribute>
  <attribute>
   <name>len</name>
   <required>false</required>
   <rtexprvalue>true</rtexprvalue>
   <type>java.lang.Integer</type>
  </attribute>
  <attribute>
   <name>suffix</name>
   <required>false</required>
   <rtexprvalue>true</rtexprvalue>
  </attribute>
 </tag>
</taglib>

代码就那么多,考回去改成自己想要的名字就可以用

 

1
0
分享到:
评论

相关推荐

    自己写的截取标题标签

    写了一个截取标题的标签 &lt;br&gt;解压后将java文件考到自己的工程的任意包中 &lt;br&gt;将tld文件考到web工程 web-inf下面 &lt;br&gt;同时修改tld文件 &lt;br&gt;&lt;tagclass&gt;org.hb.common.tools.CutStringTag&lt;/tagclass&gt;&lt;br&gt;...

    asp截取文章标题的长度达大小

    由于显示界面的限制,我们可能需要截取文章标题到一定的长度,以确保它们适应页面布局。"asp截取文章标题的长度达大小"这个话题正是关于如何在ASP.NET中有效地实现这一功能。 首先,我们需要理解在ASP.NET中处理...

    【分享】字符串截取标签

    标题中的“字符串截取标签”通常是指在编程中用于处理字符串的一种技术,它涉及如何从一个长字符串中提取出特定部分。在许多编程语言中,都有内置的字符串处理函数或方法来实现这一功能。例如,在Python中,我们可以...

    最准确的php截取字符串长度函数

    5. 如果截取长度小于指定长度,则返回截取的字符串`$str2`;如果等于或者超过指定长度,则追加`$append`参数。 值得注意的是,函数使用了UTF-8编码的特性,它是一种变长的编码方式,中文字符一般占用3个字节,而...

    jeecms3.X标签整理

    这个标签用于截取字符串,例如文章标题。`s` 参数是需要截取的字符串,`len` 是目标长度,`append` 是超出长度后添加的省略号或其他字符。 5. 栏目节点列表标签 `[#list channel.nodeList as n] ${n.name} [/#...

    帝国cms万能标签实现标题截取后自动加入省略号的方法

    下面将详细介绍如何在帝国CMS中使用万能标签实现标题截取后自动加上省略号的方法。 首先,需要了解帝国CMS中的万能标签是什么。万能标签是帝国CMS提供的一个功能强大的标签系统,允许站长们快速、简便地对网站内容...

    三天以内新闻标题显示红色

    在JSP中,可以使用Struts2的`substring`标签或者Java的`String`类的`substring()`方法来截取标题。例如,如果限制标题最多显示20个字符,可以添加以下代码: ```jsp ${news.title}"&gt; ${news.title.substring(0, ...

    fengbao.rar_封包_封包 截取_封包截取

    描述中的“模拟封包截取器”可能是一个简化版的工具,它可能提供用户友好的界面,用于显示封包的详细信息,包括源和目的IP地址、端口号、传输层协议(TCP、UDP等)、数据长度等。对于初学者来说,这样的工具可以帮助...

    DEDE CMSc常用标签

    - `{field:description function='cn_substr(html2text(@me),150)'/}`:将HTML内容转化为纯文本后截取长度。 8. 其他特殊标签: - `{dede:global.cfg_dataurl/}/baidunews.xml`:用于调用百度新闻的RSS链接。 - ...

    掌上校园cnscu-WAP建站天堂V2[1].5版-目前通用性与性能最好占资源最少的WAP建站系统

    LeftID 标题截取长度,0为不截取,值为数字 BrID 多少条记录换行,0为按设置换行,其他按数值换行 OrderID 排序,0按排序设置排,1为ID,2为随机 OrderType 排序,0为升序,1为降序 读取软件列表 [$ReadFileList...

    jeecms_3.0+标签的使用

    9. 字符串长度截断标签:`[@text_cut s=title len=titLen append=append]` 用于截取字符串,如文章标题,当长度超过设定值时,可以添加指定的后缀(如省略号)。 以上标签的使用可以帮助开发者高效地构建Jeecms网站...

    自定义EL函数解决JSTL标签不足之处——按字节长度截取字符串

    做过大型网站前台的Web开发程序员最头疼的事情就是前台首页的布局,这其中最最头疼的就是标题字符的截取的问题,虽然有fn:substring,但表现率以及对中文的支持均不够完善,其实最终还是归结为客户要求太高了,不过...

    IWMS新闻系统调用插件 v1.0.rar

    参数1 this.dbHelper(不可修改) 参数2 调用条数 参数3 分类ID 参数4 标题长度 参数5 摘要长度 参数6 是否显示下属子分类数据 参数7 标题或摘要超长时截取后补足字符 参数8 单条记录显示模板 $title$ 标例代码: 2...

    CSS:用overflow代替left截取指定长度字符串

    另一种是在服务器端使用字符串函数,如`left`,来截取标题的指定长度。这两种方法各有优缺点,下面我们将深入探讨。 首先,处理位置不同。使用CSS的`overflow`属性是客户端渲染的方式,它在用户浏览器中执行,根据...

    文本框指定字符串长度

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

    易语言不用时钟滚动标题源码

    6. 在定时器的事件处理程序中,根据标题长度和滚动速度计算新的显示位置,然后更新标签的文本。 标签的滚动效果可以有多种实现方式,例如左右滚动、上下滚动或者循环滚动。具体实现方法会根据标题的滚动方向和滚动...

    jeecms3.0标签使用说明书

    9. 字符串长度截断标签:`[@text_cut s=title len=titLen append=...`] 用于截取字符串长度,例如标题,当超过设定长度时,添加省略号。 以上是Jeecms 3.0 标签使用的一些关键点,这些标签使得开发者能够方便地构建...

    java 字符串指定长度

    标题中的“Java 字符串指定长度”指的是在Java编程中,如何处理字符串以确保它们的长度符合特定的要求。这可能涉及到字符串的截取、填充、格式化等方面的知识。以下是对这个主题的详细解释: 在Java中,字符串是不...

    截取mp3工具

    【标题】"截取mp3工具"涉及到的核心技术是音频处理和编辑,特别是针对MP3格式的音频文件。MP3是一种广泛使用的有损音频压缩格式,它能够在保持相对较高音质的同时大大减小文件体积,便于存储和分享。在本场景中,...

    javascript超过容器后显示省略号效果的方法(兼容一行或者多行)_.docx

    【标题】: 使用JavaScript实现超过容器显示省略号效果(兼容单行或多行) 【描述】: 本文介绍如何利用JavaScript实现文字超出容器显示省略号的效果,同时兼容单行和多行的情况。 【标签】: JavaScript, CSS, 文本...

Global site tag (gtag.js) - Google Analytics