可能之前是习惯了上网查看其他人的资料,当我遇到这样的问题的时候,我第一时间想到的就是上网查个现成的方法直接用;可是查阅网上各大论坛以及其他资料之后,发现大部分人都是照搬其他人的,这种情况很严重,而且个人感觉很不利于个人技术的成长;当然更重要的原因是,我感觉网上的大部分方法都把问题给复杂化了,无论是用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));
本文出自 “猪会飞” 博客,请务必保留此出处http://jiyanle.blog.51cto.com/6932197/1435022