java中英文字符长度截取问题
public static String subStr(String str, int num) {int max = num;try {max = trimGBK(str.getBytes("GBK"),num);} catch (UnsupportedEncodingException e) {e.printStackTrace();} int sum = 0;if (str != null && str.length() > max) {StringBuilder sb = new StringBuilder(max);for (int i = 0; i < str.length(); i++) {int c = str.charAt(i);//if ((c & 0xff00) != 0)//sum += 2;//elsesum += 1;if (sum <= max)sb.append((char) c);elsebreak;}return sb.append("...").toString();} elsereturn str != null ? str : "";}public static int trimGBK(byte[] buf,int n){ int num = 0; boolean bChineseFirstHalf = false; if(buf.length < n )return buf.length; for(int i=0;i<n;i++) { if(buf[i]<0 && !bChineseFirstHalf){ bChineseFirstHalf = true; }else{ num++; bChineseFirstHalf = false; } } return num; }