- 浏览: 598726 次
- 性别:
- 来自: 杭州
最新评论
-
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 1898最近些的爬虫请求某代理网站时运行几天就会持续报错4 ... -
Java通过浏览器请求头(UserAgent)获取手机机型
2014-09-20 15:38 27179方案一:正则表达式 通过观察规律,得出以下表达式: ; ... -
TOMCAT7 生产环境优化
2014-05-28 16:33 26870TOMCAT的优化基本分为两 ... -
CMPP3.0 CMPP2.0 java实现
2013-05-13 11:49 33570实现了连接、短信收发、webpush,支持长短信。 ... -
nginx配置
2013-02-27 13:22 1274#user nobody; worker_proc ... -
java从apk文件里获取包名、版本号
2012-12-11 15:36 25919测试代码: package org.apkinfo.t ... -
java 进阶(持续补充)
2012-10-11 14:52 740JDK1.5新增特性 枚举、泛型、可变参数、注 ... -
[非常简单]Linux下启动java程序的通用脚本sh(可用作开机启动service脚本)
2011-11-07 09:24 17759如果未设置JAVA_HOME环境变量,需要手动指定 #JDK ... -
2年经验面试复习大纲【欢迎补充】
2011-05-18 17:02 2041前言: 由于最近换工作,需要面试,为了加深自己复习的印象,同 ... -
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 52231、 set命令 当没有参数的时候,列出系统中 ... -
WindowsXP下通过硬盘安装Ubuntu实现双系统2种方法对比分析
2011-04-01 15:11 6605首先是一种适合新手的方法,这种方法把Ubuntu当作一个软件安 ... -
Linux下的CVS权限配置
2011-03-31 15:56 2457虽然SVN现在已经是主流,但CVS仍然是很多公司的选择,由于考 ... -
linux mysql安装
2011-02-21 08:44 34391、解压安装包 #tar zxvf m ... -
【诡异问题系列】LINUX TOMCAT能连上MYSQL 但查询不出数据
2010-11-03 14:31 98jdk->tomcat->mysql 都配置好了后 ... -
刨根问底session
2010-06-29 15:10 2506摘要:虽然session机 ... -
jquery ajax 跨域解决方案【1分钟】
2010-06-08 10:53 2809背景,由于登录服务器和应用服务器不在一个域,所以必须跨域进行登 ... -
String StringBuffer StringBuilder
2010-05-31 15:56 1253这篇文章讲的很好,推荐下: 三分钟理解Java中字符串(Str ... -
JavaScript 深入学习 笔记
2010-01-07 13:18 1455本文主要记录一些JavaScript的比较值得注意的特性。 ...
相关推荐
结合标签"源码",可能意味着这篇博文详细解释了如何使用源代码实现这些功能,包括自定义的字符串截取函数、点击事件处理和Base64编码解码。"工具"标签则可能暗示了博主分享了一些实用的工具或者技巧,帮助读者更有效...
在这种情况下,标准的字符串截取函数(如`substr`)可能会导致HTML结构的破坏,因为它们不会考虑标签的开启和关闭。为了解决这个问题,我们可以使用自定义的函数来截取并正确处理包含HTML的字符串。这里介绍的`cut_...
- 字符串截取(例如substr); - 字符串合并(例如T[I]=S2[k++])。 文档中还出现了MAXSTRLEN常量,这可能是一个定义字符串最大长度的宏。还有一个函数main(),它通常在C++程序中作为程序的入口点。此外,函数index...
在标签方面,除了关注PHP本身截取字符串的函数外,还提到了MySQL中的字符串截取,这可能意味着相关的内容还会涉及数据库中字符串操作的知识点。 从给出的内容片段中可以看到,文章的核心是一个自定义的PHP函数`...
本文实例讲述了php截取html字符串及自动补全html标签的方法。分享给大家供大家参考。具体分析如下: 这里总结一下关于利用php截取html字符串自动补全html标签,实际开发中会经常碰到,很多人直接先strip_tags过滤掉...
在描述中提到了一个博客链接,虽然没有具体内容,但我们可以推测博主可能分享了关于字符串的一些实用技巧、常见问题或者深入的源码分析。通常,字符串相关的博客会涉及以下知识点: 1. **字符串定义**:在许多语言...
这里我们将深入探讨如何正确使用`if`标签来判断字符串。 错误的写法通常会出现在直接比较字符串时没有正确地添加引号。比如,错误的写法是`if test=”status == ‘Y'”`。这样的写法会导致一个`...
1. 字符串截取与拼接:JavaScript中的字符串可以通过substring方法进行截取,并通过字符串拼接的方式实现中间部分的替换。在提供的代码中,使用了str.substring(0, frontLen)来截取字符串的前部分,str.substring...
在IT行业中,"截图字符串"这个标题可能是指一种技术或者工具,用于捕获屏幕上的图像并将其转换为可编辑或可分享的文本形式。这种技术通常涉及到光学字符识别(OCR,Optical Character Recognition)和图像处理。OCR...
2. 字符与字符串的操作:易语言提供了丰富的字符串操作函数,包括获取长度、截取子串、连接字符串、比较字符串等。在处理文本时,这些函数非常实用。 二、插入字符 在易语言中,插入字符通常涉及到字符串的拼接...
在处理过程中,需要特别注意的是,修改`a`标签内文本节点的值并不会自动更新`a`标签的`value`,因此在截取后,我们需要手动构建新的HTML字符串。`mb_strwidth`用于计算字符串宽度(中文字符算作2个宽度),而`mb_...
易语言是一种专为中国人设计的编程语言,它以简体中文作为编程符号,降低了编程的门槛,使得更多非计算机专业的人也能进行...在实际开发中,可以结合使用`字符串替换`、`字符串截取`等函数,以应对复杂的文本处理需求。
**字符串操作**:介绍如何使用索引来访问字符串中的字符,以及如何截取子串。 - **字符串的拼接**:未给出具体示例。 - **知识点**: 1. **字符串连接**:介绍如何将多个字符串合并为一个字符串。 - **字符串的...
在编程实践中,Mid()函数经常用于截取字符串的一部分,或者在替换字符串时定位需要修改的部分。在处理大量文本数据,如读取文件、解析XML或JSON时,Mid()函数是非常有用的工具。 至于"REC 70",由于缺乏具体信息,...
首先,我们要理解问题的核心:不能简单地按字符数截取HTML字符串,因为HTML中的标签会影响文本的布局和显示。例如,图片`<img>`、换行符` `和水平线`<hr>`等元素不应该被简单地截断。因此,我们需要解析HTML,...
- NDIC_Hook.res:这是Delphi项目的资源文件,可能包含了程序的图标、字符串表等资源。 - bin:这个通常表示二进制文件夹,可能包含编译后的可执行文件或其他二进制资源。 综合以上信息,这个Delphi版的封包截取...
1. 实现字符串长度截取(cutstr):这个函数允许你截取一个字符串到指定的长度,如果遇到多字节字符(如中文字符)时,会进行相应的计数调整,确保结果字符串不会因为字符截断而出现乱码。 2. 获取域名主机(get...