用 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