可能之前是习惯了上网查看其他人的资料,当我遇到这样的问题的时候,我第一时间想到的就是上网查个现成的方法直接用;可是查阅网上各大论坛以及其他资料之后,发现大部分人都是照搬其他人的,这种情况很严重,而且个人感觉很不利于个人技术的成长;当然更重要的原因是,我感觉网上的大部分方法都把问题给复杂化了,无论是用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));