可能之前是习惯了上网查看其他人的资料,当我遇到这样的问题的时候,我第一时间想到的就是上网查个现成的方法直接用;可是查阅网上各大论坛以及其他资料之后,发现大部分人都是照搬其他人的,这种情况很严重,而且个人感觉很不利于个人技术的成长;当然更重要的原因是,我感觉网上的大部分方法都把问题给复杂化了,无论是用js方法截取还是通过封装Java类,都感觉繁琐了些;

  为此我自己写了个相对来说较为简单的方法,其实很简单的思路和方法就能实现,下面奉上我自己的方法,希望大家多多指正不足之处(支持全角输入的字符和汉字等,已测;可直接引用):


/**
 * 返回截取指定长度字节数后的字符串,多余部分用“...”代替
 * 
 * @作者 jiyanle
 * @日期 2014-7-6
 * @param strs
 * @param length
 * @return
 */
public static String cutStr(String strs, int length) {
    int sum = 0;
    String finalStr = "";
    if (null == strs || strs.getBytes().length <= length) {
        finalStr = (strs==null?"":strs);
    } else {
        for (int i = 0; i < strs.length(); i++) {
            String str = strs.substring(i, i + 1);
            // 累加单个字符字节数
            sum += str.getBytes().length;
            if (sum > length) {
                finalStr = strs.substring(0, i) + "...";
                break;
            }
        }
    }
    return finalStr;
}


测试用例如下:

1、直接在js中弹出方式:alert('<%=CutString.cutStr("jj吉k_延jyl乐", 4)%>');

2、直接控制台输出方式:System.out.println(cutStr("jj吉k_延jyl乐", 4));