你看一下这段代码就知道写了。
public static String subStringByByte(String str , int byteLength){
   String tempStr = "";
   for(int i = 0;i < str.length();i++){
     tempStr = str.substring(0,i);
     if(tempStr.getBytes().length > byteLength){
       tempStr = str.substring(0,i-1);
       break;
     }else if(tempStr.getBytes().length == byteLength){
       tempStr = str.substring(0,i);
       break;
     }
   }
   return tempStr;
 }
 public static void main(String[] args){
   String str = "不ABC安DEF";   
   System.out.println("subStringByByte(str ,4 ) = " + subStringByByte(str,4));
   System.out.println("subStringByByte(str ,6 ) = " + subStringByByte(str,6));
 }

解决方案 »

  1.   

    上面的代码是只有ByteLenght为偶数时汉字才可以正常截取   String str = "不ABC安DEF";   
       System.out.println("subStringByByte(str ,1 ) = " + subStringByByte(str,1));
    输出为空
       String str = "不ABC安DEF";   
       System.out.println("subStringByByte(str ,2 ) = " + subStringByByte(str,2));
    输出为:不感觉应该把ByteLength改成要截取字符串的长度,在程序里再对中文字符做处理
    至少楼主的要求是这样