Java版按字節限制截取字符顯示

public class CutString {app

 /**
  * 判斷是不是一箇中文漢字
  *
  * @param c
  *            字符
  * @return true表示是中文漢字,false表示是英文字母
  * @throws UnsupportedEncodingException
  *             使用了JAVA不支持的編碼格式
  */
 public static boolean isChineseChar(char c)
   throws UnsupportedEncodingException {
  // 若是字節數大於1,是漢字
  // 以這種方式區別英文字母和中文漢字並非十分嚴謹,但在這個題目中,這樣判斷已經足夠了
  return String.valueOf(c).getBytes("utf-8").length > 1;
 }編碼

 /**
  * 按字節截取字符串
  *
  * @param orignal
  *            原始字符串
  * @param count
  *            截取位數
  * @return 截取後的字符串
  * @throws UnsupportedEncodingException
  *             使用了JAVA不支持的編碼格式
  */
 public static String substring(String orignal, int count)
   throws UnsupportedEncodingException {
  // 原始字符不爲null,也不是空字符串
  if (orignal != null && !"".equals(orignal)) {
   // 將原始字符串轉換爲utf-8編碼格式
   orignal = new String(orignal.getBytes(), "utf-8");
   // 要截取的字節數大於0,且小於原始字符串的字節數
   if (count > 0 && count < orignal.getBytes("utf-8").length) {
    StringBuffer buff = new StringBuffer();
    char c;
    for (int i = 0; i < count; i++) {
     c = orignal.charAt(i);
     buff.append(c);
     if (CutString.isChineseChar(c)) {
      // 遇到中文漢字,截取字節總數減1
      --count;
     }
    }
    return buff.toString();
   }
  }
  return orignal;
 }.net

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  String str = "嘿嘿嘿嘿嘿嘿嘿";
  try {
   int len = str.getBytes("utf-8").length;
   if (len > 12) {
    System.out.println(CutString.substring(str, 12) + "...");
   } else {
    System.out.println(CutString.substring(str, 12));
   }utf-8

  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }字符串

 }get

}string

相關文章
相關標籤/搜索