不知道有没有更高效的办法比如字符串
我是1只小小鸟现在要取4个byte长就是说,结果是:我是(4个字节长)如果是
1个小鸟同样要求,结果只能是:1只最终的目标:
比如有2句话:现在社会中有。。
342343432423432占的位置一样多,如果用substring肯定不行,

解决方案 »

  1.   


    /**
     * @param inputStr 输入字符串
     * @param subNum  要借取得字节数
     * @return  截取后的字符串
     */
    public String subStringb(String inputStr, int subNum){
            char[] stringb = inputStr.toCharArray();
            String subString = "";
            int byteNum = 0;
            for(int i = 0; i < stringb.length; i++){
                String sl = String.valueOf(stringb[i]);
                byteNum += sl.getBytes().length;
                if(byteNum > subNum){
                    break;
                }
                subString += sl;
            }
            
            return subString;
        }考虑到全角字符若取单数字节会出现乱码,所以只取到整字符。
      

  2.   

    /**
       * 按字节长度截取字符串
       * @param str 将要截取的字符串参数
       * @param toCount 截取的字节长度
       * @param more 字符串末尾补上的字符串
       * @return 返回截取后的字符串
       */
      public String substring(String str, int toCount, String more) {
        int reInt = 0;
        String reStr = "";
        if (str == null)
          return "";
        char[] tempChar = str.toCharArray();
        for (int kk = 0; (kk < tempChar.length && toCount > reInt); kk++) {
          String s1 = str.valueOf(tempChar[kk]);
          byte[] b = s1.getBytes();
          reInt += b.length;
          reStr += tempChar[kk];
        }
        if (toCount == reInt || (toCount == reInt - 1))
          reStr += more;
        return reStr;
      }
      

  3.   

    .getBytes()方法
    然后循环一下