- 浏览: 592206 次
- 性别:
- 来自: 杭州
最新评论
-
tylerren:
stauts : 9 返回值是9,有遇到的吗?
CMPP3.0 CMPP2.0 java实现 -
tengdong:
2019-02-26 10:47:30,231 INFO Ms ...
CMPP3.0 CMPP2.0 java实现 -
secjy:
cmpp2 发送之后 ,提示发送成功,但是手机接收不到短信。c ...
CMPP3.0 CMPP2.0 java实现 -
西瓜xg:
2017-05-18 12:05:59,222 INFO Ms ...
CMPP3.0 CMPP2.0 java实现 -
贝塔ZQ:
Java实现读取excel文件到数据库中,也可以使用插件实现的 ...
使用Java读取Excel文件内容 excel导入sql
以前发过一篇文章,最开始采用的是css控制width的方式控制标题的长度。这种方式的弱点就是:会出现截取半个字,而且FIERFOX下并不兼容。
静下心来写了一个自定义标签,用代码的方式控制长度,这个方式最精准不过了!
首先是tag源文件:
package cn.ryan.commons.web.taglib; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport; import org.apache.log4j.Logger; /** * 截断字符串并以制定符号替代的tag * * @author ryankay.xiang@gmail.com * */ public class CutStringTag extends TagSupport { /** * Logger for this class */ private static final Logger logger = Logger.getLogger(CutStringTag.class); String value; String mark=""; Integer size; @Override public int doStartTag() throws JspException { return SKIP_BODY; } @Override public int doEndTag() throws JspException { String html = cutString(value, size,mark); try { this.pageContext.getOut().write(html.toString()); } catch (IOException e) { logger.error("tag CutStringTag error", e); } return EVAL_PAGE; } public String cutString(String str, int len,String mark) { len = len * 2; StringBuffer sb = new StringBuffer(); int counter = 0; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c < 255) { counter++; } else { counter = counter + 2; } if (counter > len) { String result=sb.toString().trim(); result+=mark; return result; } sb.append(c); } return sb.toString(); } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String getMark() { return mark; } public void setMark(String mark) { this.mark = mark; } public Integer getSize() { return size; } public void setSize(Integer size) { this.size = size; } }
标签描述文件:site.tld
<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>site</short-name> <uri>http://www.collin.cn/taglib/site</uri> <display-name>Collin Site</display-name> <description></description> <tag> <name>cutString</name> <tag-class>cn.ryan.commons.web.taglib.CutStringTag</tag-class> <body-content>empty</body-content> <description>Used to cut a string with your parameter.</description> <attribute> <name>value</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <description>Required to set the string what you want to cut.</description> </attribute> <attribute> <name>size</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <description>Required to set the size or length and it compute as chinese.</description> </attribute> <attribute> <name>mark</name> <required>false</required> <rtexprvalue>true</rtexprvalue> <description>Write something append to the string or you can use the default ''.</description> </attribute> </tag> </taglib>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" 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-app_2_4.xsd"> <display-name>example</display-name> <description>example</description> <jsp-config> <taglib> <taglib-uri>http://www.collin.cn/taglib/site</taglib-uri> <taglib-location>/WEB-INF/site.tld</taglib-location> </taglib> </jsp-config> </web-app>
使用方法:
<site:cutString size="10" value="我们是共产主义的接班人" mark="..."/> <site:cutString size="10" value="123456789,,我们是共产主义的接班人" mark="..."/> <site:cutString size="10" value="123456789,,我们是共产主义的接班人"/>
注释:
1.mark标签制定以什么符号后缀,也可以不填,默认为""。
2.size指定限制的字符数,注意这里是指中文的字数,以中文为单位的好处是防止截取半个字。
预览效果:
http://www.wibowibo.com
当然也有其他方法控制,不过这种方式个人觉得用起来比较灵活的,而且兼容各个浏览器【这是肯定的了,呵呵】。
欢迎拍砖,呵呵。
- 新闻标题_字符串截取标签.rar (2.3 KB)
- 下载次数: 16
评论
2 楼
energykey
2009-04-09
字符串截取函数 fn:substring 函数 fn:substring 函数用于截取字符串。它的参数、返回结果和描述如表 9.28 所示: 表 9.28 fn:substring 函数 参数 描述 string 源字符串。其类型必须为 String 类型 beginIndex 指定起始下标(值从 0 开始)。其类型必须为 int 类型 endIndex 指定结束下标(值从 0 开始)。其类型必须为 int 类型 返回结果 返回一个 String 类型的值 下面看一个示例。 ${fn:substring("ABC","1","2")}<br> 截取结果为“ B ”。
function标签,不错的东西,可是如果我既有中文又要英文呢?因为标题都是动态生成的,未知的,这也是为什么这里要以中文为单位也就是两个字符为一个单位[size]的原因。这里是为了UI,通过限制字数而间接达到限制宽度[width]的作用。
所以当你指定size=10的时候,页面会显示10个中文或者20个英文字母,10个中文和20个英文字母的width差不多【10个中文略长】。
1 楼
zzx0421
2009-04-03
JSTL的FN标签好象就提供了实现吧
发表评论
-
使用httpclient返回 header too long
2017-07-14 17:14 1792最近些的爬虫请求某代理网站时运行几天就会持续报错4 ... -
Java通过浏览器请求头(UserAgent)获取手机机型
2014-09-20 15:38 27079方案一:正则表达式 通过观察规律,得出以下表达式: ; ... -
TOMCAT7 生产环境优化
2014-05-28 16:33 26724TOMCAT的优化基本分为两 ... -
CMPP3.0 CMPP2.0 java实现
2013-05-13 11:49 33217实现了连接、短信收发、webpush,支持长短信。 ... -
nginx配置
2013-02-27 13:22 1213#user nobody; worker_proc ... -
java从apk文件里获取包名、版本号
2012-12-11 15:36 25785测试代码: package org.apkinfo.t ... -
java 进阶(持续补充)
2012-10-11 14:52 740JDK1.5新增特性 枚举、泛型、可变参数、注 ... -
[非常简单]Linux下启动java程序的通用脚本sh(可用作开机启动service脚本)
2011-11-07 09:24 17689如果未设置JAVA_HOME环境变量,需要手动指定 #JDK ... -
2年经验面试复习大纲【欢迎补充】
2011-05-18 17:02 1938前言: 由于最近换工作,需要面试,为了加深自己复习的印象,同 ... -
Twitter从Rails迁移到了Java
2011-04-25 09:00 20Rail那插满五颜六色鲜艳羽毛的帽子现在跌落到了地上 ... -
一个工作了快两年的Java Coder的迷惑
2011-04-19 15:05 0时间一转眼就快2年了,首先介绍一下我自己,我不是计算机专业的, ... -
Linux shell语法小结
2011-04-11 15:03 51451、 set命令 当没有参数的时候,列出系统中 ... -
WindowsXP下通过硬盘安装Ubuntu实现双系统2种方法对比分析
2011-04-01 15:11 6536首先是一种适合新手的方法,这种方法把Ubuntu当作一个软件安 ... -
Linux下的CVS权限配置
2011-03-31 15:56 2394虽然SVN现在已经是主流,但CVS仍然是很多公司的选择,由于考 ... -
linux mysql安装
2011-02-21 08:44 33651、解压安装包 #tar zxvf m ... -
【诡异问题系列】LINUX TOMCAT能连上MYSQL 但查询不出数据
2010-11-03 14:31 98jdk->tomcat->mysql 都配置好了后 ... -
刨根问底session
2010-06-29 15:10 2420摘要:虽然session机 ... -
jquery ajax 跨域解决方案【1分钟】
2010-06-08 10:53 2744背景,由于登录服务器和应用服务器不在一个域,所以必须跨域进行登 ... -
String StringBuffer StringBuilder
2010-05-31 15:56 1192这篇文章讲的很好,推荐下: 三分钟理解Java中字符串(Str ... -
JavaScript 深入学习 笔记
2010-01-07 13:18 1360本文主要记录一些JavaScript的比较值得注意的特性。 ...
相关推荐
自己写的字符串截取,很灵活,很好用。你也可以自己修改。
substring截取字符串 substring截取字符串 substring截取字符串 substring截取字符串 substring截取字符串 substring截取字符串 substring截取字符串 substring截取字符串 substring截取字符串 substring截取字符串 ...
使用一个指定的分隔符把一个字符串分割存储到数组 使用您选择的分隔符将一个数组合并为一个字符串 返回字符串中匹配子串的第一个字符的下标
shell中字符串截取shell中字符串截取shell中字符串截取shell中字符串截取shell中字符串截取shell中字符串截取shell中字符串截取shell中字符串截取shell中字符串截取shell中字符串截取shell中字符串截取shell中字符串...
C#开发中经常用到一些字符串截取的函数,文档中含有大多数的函数
VC++字符串截取总结,对初学者很有好处的
java 字符串截取工具类java 字符串截取工具类
字符串截取字符的超强方法【引用】字符串截取字符的超强方法【引用】字符串截取字符的超强方法【引用】
一个关于字符串匹配的算法,已经经过编译,希望对你有帮助
名称 :盛飞字符串截取函数 作用 :按指定首尾字符串截取内容(本函数为从左向右截取)
用于js或者java后台截取字符串方法,有效
php字符串截取.pdf
shell 字符串 截取 查找 替换 shell 字符串 截取 查找 替换 shell 字符串 截取 查找 替换 shell 字符串 截取 查找 替换
自己输入一个字符串,字符串中可以包括字符和汉字,截取指定的字符串
各种不同的需要截取字符串的方法。一般都是一句话搞定
Delphi 字符串截取函数详细应用以及例子
C#字符串截取固定长度的方法
C++字符串截取,例如:"adda,dagf,dfa,df",将','去除,将每部分字符出入一个指定数组
给写了2个方法,一个是直接截取单个需要的字符串,比如字符串string a="ab123456",我只需要提取3,那么就是单独截取就可以了,从2开始到4结束就行。 第二个是把所有的符合条件的字符串都截取出来,提取出来,比如...