Struts2 截字符串长度 去掉字符串空格
截字符串控制文本长度:<s:property value="title.length()>15?title.substring(0,15)+'...':title"/>
去掉字符串空格:<s:property value='title.trim()'/> 这种写法最简单。。
截字符串控制文本长度的自定义标签:
<%@ taglib uri="/WEB-INF/StringOmit.tld" prefix="my" %>
<my:StringOmit maxLength="40" suffix="..."><s:property value="content"/></my:StringOmit>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>mytag</shortname>
<tag>
<name>StringOmit</name>
<tagclass>com.gwideal.jxwpgsh.util.StringOmitTag</tagclass>
<bodycontent>jsp</bodycontent>
<attribute>
<name>maxLength</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>suffix</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
package com.gwideal.jxwpgsh.util;
import java.util.ArrayList;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
@SuppressWarnings("serial")
public class StringOmitTag extends BodyTagSupport {
private int maxLength;
private String value;
private String suffix;
public int getMaxLength() {
return maxLength;
}
public void setMaxLength(int maxLength) {
this.maxLength = maxLength;
}
public String getSuffix() {
return suffix;
}
public void setSuffix(String suffix) {
this.suffix = suffix;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public int doAfterBody() throws JspException {
value=bodyContent.getString();
return SKIP_BODY;
}
public int doEndTag ()throws JspException {
JspWriter out = pageContext.getOut();
if(null==value){
value = "";
}
try {
/*old:按照长度截取
if(value.length()>maxLength){
value=value.substring(0, maxLength);
if(suffix!=null || !suffix.equals("")){
value+=suffix;
}
}
*/
int vLen = value.getBytes().length;
if(vLen>maxLength){
value=getSubString(value, (maxLength));
if(suffix!=null || !suffix.equals("")){
value+=suffix;
}
}
out.print(value);
} catch (Exception e) {
e.printStackTrace();
}
return EVAL_PAGE;
}
public static String getSubString(String oriStr, int subStrLen) {
String value="";
if (oriStr==null || subStrLen <= 0) {
// return new String[0];//返回数组
return new String();
}
ArrayList list = new ArrayList();
byte[] subStrBytes = oriStr.getBytes();
int subStrIndex = 0;
int index = 0;
while (subStrIndex < subStrBytes.length) {
int len = subStrLen;
if (subStrIndex + len > subStrBytes.length) {
len = subStrBytes.length - subStrIndex;
}
String subStr = new String(subStrBytes, subStrIndex, len);
if (subStr.charAt(subStr.length() - 1) != oriStr.charAt(index + subStr.length() - 1)) {
subStr = subStr.substring(0, subStr.length() - 1);
len = subStr.getBytes().length;
}
if(len <= 0){
//return new String[0];//返回数组
return new String();
}
subStrIndex += len;
index += subStr.length();
list.add(subStr);
value = subStr;
break;
}
//String[] subStrs = (String[]) list.toArray(new String[list.size()]);
//return subStrs;
return value;
}
}
分享到:
相关推荐
defaultValue,第一种用法不给缺失的变量指定默认值,表明默认值是空字符串,长度为0的集合,或者长度为0的Map对象. 使用!指定默认值时,并不要求默认值的类型和变量类型相同.使用??运算符非常简单,它总是返回一个布尔值...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
System.out.printf() 可插入带 % 的输入类型,前两种只可以插入转义符, 不能插入 % 的数据或字符串 在 printf 里面,输出有5个部分 %[argument_index$][flags][width][.precision]conversion 以“%”开头,[第几个...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
35、如何把一段逗号分割的字符串转换成一个数组? ............................................... 25 36、数组有没有 length()这个方法? String 有没有 length()这个方法? .................... 25 37、下面这...