`
zhouchaofei2010
  • 浏览: 1088695 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2 截字符串长度 去掉字符串空格

阅读更多

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;
    }

}

 

 

 

分享到:
评论
1 楼 ifox 2012-05-10  
鸡动。帮了我一个大忙。谢谢大哥咯

相关推荐

    freemarker总结

    defaultValue,第一种用法不给缺失的变量指定默认值,表明默认值是空字符串,长度为0的集合,或者长度为0的Map对象. 使用!指定默认值时,并不要求默认值的类型和变量类型相同.使用??运算符非常简单,它总是返回一个布尔值...

    Java面试宝典2010版

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

    整理后java开发全套达内学习笔记(含练习)

    System.out.printf() 可插入带 % 的输入类型,前两种只可以插入转义符, 不能插入 % 的数据或字符串 在 printf 里面,输出有5个部分 %[argument_index$][flags][width][.precision]conversion 以“%”开头,[第几个...

    最新Java面试宝典pdf版

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

    Java面试笔试资料大全

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

    JAVA面试宝典2010

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

    Java面试宝典-经典

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

    java面试题大全(2012版)

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

    Java面试宝典2012版

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

    java面试宝典2012

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

    Java面试宝典2012新版

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

    Java 面试宝典

    35、如何把一段逗号分割的字符串转换成一个数组? ............................................... 25 36、数组有没有 length()这个方法? String 有没有 length()这个方法? .................... 25 37、下面这...

Global site tag (gtag.js) - Google Analytics