public class Test {
public static void main(String[] args) {
String str2 = "abcdefghijklmnopq";
String str1 = "abcdefghijklmnop";
String str3 = "abcdefghijklmno";
String str4 = "一二三四五六七八九十一二三四五六";
String str5 = "一二三四五六七八";
String str6 = "一二三四五六七";
String str7 = "一二三a四五六七八九十一二三四五六";
String append = " ...";
System.out.println(trancate(str1, 16, append));
System.out.println(trancate(str2, 16, append));
System.out.println(trancate(str3, 16, append));
System.out.println(trancate(str4, 16, append));
System.out.println(trancate(str5, 16, append));
System.out.println(trancate(str6, 16, append));
System.out.println(trancate(str7, 16, append));
}
private static String trancate(String src, int length) {
return trancate(src, length, "");
}
private static String trancate(String src, int length, String append) {
int len = 0;
char[] chars = src.toCharArray();
StringBuffer sb = new StringBuffer();
int i = 0;
while(len < length) {
if(i >= chars.length) {
return sb.toString();
}
sb.append(chars[i]);
if(chars[i++] > 0xff) {
len += 2;
}else{
len++;
}
}
if(sb.toString().equals(src)) {
return sb.toString();
}else{
sb.append(append);
return sb.toString();
}
}
}