网络上的提供的大多数截取长度的方法放到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>
代码就那么多,考回去改成自己想要的名字就可以用
分享到:
相关推荐
写了一个截取标题的标签 <br>解压后将java文件考到自己的工程的任意包中 <br>将tld文件考到web工程 web-inf下面 <br>同时修改tld文件 <br><tagclass>org.hb.common.tools.CutStringTag</tagclass><br>...
由于显示界面的限制,我们可能需要截取文章标题到一定的长度,以确保它们适应页面布局。"asp截取文章标题的长度达大小"这个话题正是关于如何在ASP.NET中有效地实现这一功能。 首先,我们需要理解在ASP.NET中处理...
标题中的“字符串截取标签”通常是指在编程中用于处理字符串的一种技术,它涉及如何从一个长字符串中提取出特定部分。在许多编程语言中,都有内置的字符串处理函数或方法来实现这一功能。例如,在Python中,我们可以...
5. 如果截取长度小于指定长度,则返回截取的字符串`$str2`;如果等于或者超过指定长度,则追加`$append`参数。 值得注意的是,函数使用了UTF-8编码的特性,它是一种变长的编码方式,中文字符一般占用3个字节,而...
标题中的“物料截取自动计算-固定长度规格物料,根据订单数量,需求长度,自动计算物料需要采购数量及配比”表明这是一个针对物料管理的软件工具,特别适用于那些处理固定长度规格物料的企业或生产线。这个工具的...
这个标签用于截取字符串,例如文章标题。`s` 参数是需要截取的字符串,`len` 是目标长度,`append` 是超出长度后添加的省略号或其他字符。 5. 栏目节点列表标签 `[#list channel.nodeList as n] ${n.name} [/#...
下面将详细介绍如何在帝国CMS中使用万能标签实现标题截取后自动加上省略号的方法。 首先,需要了解帝国CMS中的万能标签是什么。万能标签是帝国CMS提供的一个功能强大的标签系统,允许站长们快速、简便地对网站内容...
在JSP中,可以使用Struts2的`substring`标签或者Java的`String`类的`substring()`方法来截取标题。例如,如果限制标题最多显示20个字符,可以添加以下代码: ```jsp ${news.title}"> ${news.title.substring(0, ...
描述中的“模拟封包截取器”可能是一个简化版的工具,它可能提供用户友好的界面,用于显示封包的详细信息,包括源和目的IP地址、端口号、传输层协议(TCP、UDP等)、数据长度等。对于初学者来说,这样的工具可以帮助...
- `{field:description function='cn_substr(html2text(@me),150)'/}`:将HTML内容转化为纯文本后截取长度。 8. 其他特殊标签: - `{dede:global.cfg_dataurl/}/baidunews.xml`:用于调用百度新闻的RSS链接。 - ...
LeftID 标题截取长度,0为不截取,值为数字 BrID 多少条记录换行,0为按设置换行,其他按数值换行 OrderID 排序,0按排序设置排,1为ID,2为随机 OrderType 排序,0为升序,1为降序 读取软件列表 [$ReadFileList...
9. 字符串长度截断标签:`[@text_cut s=title len=titLen append=append]` 用于截取字符串,如文章标题,当长度超过设定值时,可以添加指定的后缀(如省略号)。 以上标签的使用可以帮助开发者高效地构建Jeecms网站...
做过大型网站前台的Web开发程序员最头疼的事情就是前台首页的布局,这其中最最头疼的就是标题字符的截取的问题,虽然有fn:substring,但表现率以及对中文的支持均不够完善,其实最终还是归结为客户要求太高了,不过...
参数1 this.dbHelper(不可修改) 参数2 调用条数 参数3 分类ID 参数4 标题长度 参数5 摘要长度 参数6 是否显示下属子分类数据 参数7 标题或摘要超长时截取后补足字符 参数8 单条记录显示模板 $title$ 标例代码: 2...
另一种是在服务器端使用字符串函数,如`left`,来截取标题的指定长度。这两种方法各有优缺点,下面我们将深入探讨。 首先,处理位置不同。使用CSS的`overflow`属性是客户端渲染的方式,它在用户浏览器中执行,根据...
标题“文本框指定字符串长度”和描述“ios限制uitextfield字符长度”所指的就是如何在iOS中设置`UITextField`的字符限制。 首先,我们可以使用`UITextField`的代理方法来实现这一功能。`UITextField`遵循`...
6. 在定时器的事件处理程序中,根据标题长度和滚动速度计算新的显示位置,然后更新标签的文本。 标签的滚动效果可以有多种实现方式,例如左右滚动、上下滚动或者循环滚动。具体实现方法会根据标题的滚动方向和滚动...
9. 字符串长度截断标签:`[@text_cut s=title len=titLen append=...`] 用于截取字符串长度,例如标题,当超过设定长度时,添加省略号。 以上是Jeecms 3.0 标签使用的一些关键点,这些标签使得开发者能够方便地构建...
标题中的“Java 字符串指定长度”指的是在Java编程中,如何处理字符串以确保它们的长度符合特定的要求。这可能涉及到字符串的截取、填充、格式化等方面的知识。以下是对这个主题的详细解释: 在Java中,字符串是不...
【标题】"截取mp3工具"涉及到的核心技术是音频处理和编辑,特别是针对MP3格式的音频文件。MP3是一种广泛使用的有损音频压缩格式,它能够在保持相对较高音质的同时大大减小文件体积,便于存储和分享。在本场景中,...