A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李厚斌 于 2014-4-3 03:16 编辑

  1. public class Test {  
  2. /**
  3.   * @param args
  4.   * @throws IOException    */
  5. public static void main(String[] args) throws IOException {      String str = "ab你好cd谢谢"; //  str = "ab琲琲cd琲琲";   
  6. //  int len = str.getBytes("gbk").length;   
  7. //  
  8. for(int x=0; x<len; x++){
  9. //   System.out.println("截取"+(x+1)+"个字节结果是:"+cutStringByByte(str, x+1)); //  }   
  10.   int len = str.getBytes("utf-8").length;     for(int x=0; x<len; x++){
  11.    System.out.println("截取"+(x+1)+"个字节结果是:"+cutStringByU8Byte(str, x+1));   }         
  12. //  String str = "琲";
  13. //  byte[] buf = str.getBytes("gbk"); //  for(byte b : buf){
  14. //   System.out.println(b);//-84  105  //  }      }    /*     在java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符。   但对应的字节数不同,一个汉字占两个字节。   定义一个方法,按照最大的字节数来取子串。   如:对于“ab你好”,如果取三个字节,那么子串就是ab与“你”字的半个,   那么半个就要舍弃。如果去四个字节就是“ab你”,取五个字节还是“ab你”.   */   
  15. public static String cutStringByU8Byte(String str, int len) throws IOException {   
  16.   byte[] buf = str.getBytes("utf-8");   
  17. int count = 0;
  18.   for(int x=len-1; x>=0; x--){    if(buf[x]<0)     count++;    else
  19.     break;   }   
  20.   if(count%3==0)
  21.    return new String(buf,0,len,"utf-8");   else if(count%3==1)
  22.    return new String(buf,0,len-1,"utf-8");   else  
  23.    return new String(buf,0,len-2,"utf-8");   
  24. }
  25.   public static String cutStringByByte(String str,int len) throws IOException{   
  26.   byte[] buf = str.getBytes("gbk");   int count = 0;
  27.   for(int x=len-1; x>=0; x--){    if(buf[x]<0)     count++;    else
  28.     break;   }   
  29.   if(count%2==0)
  30.    return new String(buf,0,len,"gbk");   else
  31.    return new String(buf,0,len-1,"gbk");  }
  32. }
复制代码
看网上的毕老师笔记时候出的联系题。。。找了视频压根没讲这块啊。。看半天都没看懂。。百度定义方法按最大字节数取子串。。网上都没有
这到底是将的啥意思啊。。。

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

2 个回复

倒序浏览
这是我看过的最烂的一段代码,在公司里要是给组长,组长估计会疯狂的。
我给你梳理了下,你自己看看吧。也不是很难。

public class Test
{  
         public static void main(String[] args) throws IOException
         {     
                         String str = "ab你好cd谢谢";

                         for(int x=0; x<len; x++)
                        {
                                 int len = str.getBytes("utf-8").length;  
                                 for(int x=0; x<len; x++)
                                 {
                                         System.out.println("截取"+(x+1)+"个字节结果是:"+cutStringByU8Byte(str, x+1));  
                                 }  
                        }
         }

         public static String cutStringByU8Byte(String str, int len) throws IOException
         {   
                byte[] buf = str.getBytes("utf-8");   
                int count = 0;
                for(int x=len-1; x>=0; x--)
                {   
                        if(buf[x]<0)   
                                count++;   
                        else
                                break;  
                }   
                  if(count%3==0)
                            return new String(buf,0,len,"utf-8");   
                  else if(count%3==1)
                                return new String(buf,0,len-1,"utf-8");  
                  else  
                                return new String(buf,0,len-2,"utf-8");   
        }
     public static String cutStringByByte(String str,int len) throws IOException
        {   
                 byte[] buf = str.getBytes("gbk");  
                 int count = 0;
                 for(int x=len-1; x>=0; x--)
                 {   
                         if(buf[x]<0)     
                                 count++;   
                         else
                                 break;   
                 }   
                if(count%2==0)
                        return new String(buf,0,len,"gbk");  
                else
                        return new String(buf,0,len-1,"gbk");
                }
}

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报
黄泉 发表于 2014-4-2 22:26
这是我看过的最烂的一段代码,在公司里要是给组长,组长估计会疯狂的。
我给你梳理了下,你自己看看吧。也 ...

我把注释去掉了,你自己看吧!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马