天天看点

java根据字节数截取字符串

   int len = 0;

     String temp = "";

     while (result.length() > len) {//result原始字符串

      temp = result.substring(len);

      //System.out.println(result + " == result");

      String subContent = Util.substring(temp, 980);//每次截取内容不会超过980字节数

      len += subContent.length();

SendMessageByXoYo.getResultSms(midMobile,subContent);//使用截取的字符串

  }

 public class Util {

    public static boolean isChineseChar(char c){  

        // 如果字节数大于1,是汉字  

        // 以这种方式区别英文字母和中文汉字并不是十分严谨,但在这个题目中,这样判断已经足够了  

        try {

   return String.valueOf(c).getBytes("GBK").length > 1;

  } catch (UnsupportedEncodingException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

   return false;

  }  

    }  

    public static String substring(String orignal, int count) {  

        // 原始字符不为null,也不是空字符串  

        if (null != orignal && !"".equals(orignal)) {  

            // 将原始字符串转换为GBK编码格式  

            try {

    orignal = new String(orignal.getBytes("GBK"), "GBK");

    if (count > 0 && count < orignal.getBytes("GBK").length) {  

                 StringBuffer buff = new StringBuffer();  

                 char c;  

                 for (int i = 0; i < count; i++) {  

                     // charAt(int index)也是按照字符来分解字符串的  

                     c = orignal.charAt(i);  

                     buff.append(c);  

                     if (isChineseChar(c)) {  

                         // 遇到中文汉字,截取字节总数减2

                         count -= 2;   // 一般汉字在utf-8中为3个字节长度

                     }  

                 }  

                 return buff.toString();  

             }  

   } catch (UnsupportedEncodingException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

   }  

            // 要截取的字节数大于0,且小于原始字符串的字节数  

        }  

        return orignal;  

    }

}