用 java来截取中文英文字符串,过多的用省略号显示
需求:任意一个字符串 比如"abc我爱中国" 大于12个字节的 要截取掉,用 ... 来结尾, 最终结果不能大于12个字节 注 中文占2个字节
public static String subStringCN(final String str, final int maxLength) { if (str == null) { return str; } String suffix = "..."; int suffixLen = suffix.length(); final StringBuffer sbuffer = new StringBuffer(); final char[] chr = str.trim().toCharArray(); int len = 0; for (int i = 0; i < chr.length; i++) { if (chr[i] >= 0xa1) { len += 2; } else { len++; } } if(len<=maxLength){ return str; } len = 0; for (int i = 0; i < chr.length; i++) { if (chr[i] >= 0xa1) { len += 2; if (len + suffixLen > maxLength) { break; }else { sbuffer.append(chr[i]); } } else { len++; if (len + suffixLen > maxLength) { break; }else { sbuffer.append(chr[i]); } } } sbuffer.append(suffix); return sbuffer.toString(); } public static void main(String[] args) { String st2 = "是个好人啊,是个好人啊"; System.out.println(subStringCN(st2, 12)); String st3 = "是个好人啊 persen"; System.out.println(subStringCN(st3, 12)); String st4 = " persen是个好人啊"; System.out.println(subStringCN(st4, 12)); String st1 = "个好人啊"; System.out.println(subStringCN(st1, 12)); String st0 = "sdddddddddddddddddddd"; System.out.println(subStringCN(st0, 12)); }
输出如下:
是个好人... 是个好人... persen是... 个好人啊 sdddddddd...
本文转自:http://lishiguang.iteye.com/blog/1336057