李敏  
          日歷
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345
          統計
          • 隨筆 - 1
          • 文章 - 40
          • 評論 - 4
          • 引用 - 0

          導航

          常用鏈接

          留言簿(1)

          文章分類

          文章檔案

          相冊

          收藏夾

          它山之石

          聚賢莊

          搜索

          •  

          最新評論

           
           
            編寫一個截取字符串的函數,輸入為一個字符串和字節數,輸出為按字節截取的字符串。 但是要保證漢字不被截半個,如“我ABC”4,應該截為“我AB”,輸入“我ABC漢DEF”,6,應該輸出為“我ABC”而不是“我ABC+漢的半個”。
              String str="abc好嗎d";
              
              
          int byteCount=6;
              
              String newStr
          =split(str,byteCount);
              
              System.out.println(str);
              System.out.println(byteCount);
              
              System.out.println(newStr);

          功能模塊:
          /**
             * 移除截取的字節中的一個漢字單字節
             
          */
               
            
          private byte[] removeInvalidByte(byte[]byteArray){
            
              
          int newLen=byteArray.length-1;
              
              
          byte[]newByteArray=Arrays.copyOf(byteArray,newLen);
              
              
          return newByteArray;
            }

            
            
          /**
             * 查找截取的字節中是否保留了一個漢字的單字節
             
          */
               
            
          private boolean haveFullChineseByte(byte[]byteArray){
              
          int count=0;
              
              
          for(byte word:byteArray){
                
          if(word<0){
                  count
          ++;
                }
                
              }

              
              
          boolean isFull=(count%2!=0);
              
              
          return isFull;
            }

            
            
          private byte[] getSplitBytes(String str,int byteCount){
              
          byte byteArray[]=str.getBytes();
              
              
          byte newByteArray[]=Arrays.copyOf(byteArray,byteCount);
              
              
          /**
              for(int i=0;i<byteCount;i++){
                byte word=byteArray[i];
                
                newByteArray[i]=word;
              }
              
          */

              
          return newByteArray;
            }

            
            
          /**
             * 截取一個字符串中指定長度的字節(如果最后一位為一個漢字的單字節則進行忽略)
             
          */
               
            
          private String split(String str,int byteCount){
              
          byte newByteArray[]=getSplitBytes(str,byteCount);
              
              
          if(haveFullChineseByte(newByteArray)){
                newByteArray
          =removeInvalidByte(newByteArray);
              }

              
              String newStr
          =new String(newByteArray);

              
          return newStr;
            }






          posted on 2011-11-17 20:02 李敏 閱讀(240) 評論(0)  編輯  收藏 所屬分類: 算法
           
          Copyright © 李敏 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 庆阳市| 德江县| 开封市| 扎鲁特旗| 榆中县| 宁远县| 乌恰县| 巴塘县| 新竹市| 伊川县| 金川县| 兰州市| 阿坝| 确山县| 印江| 任丘市| 泉州市| 延吉市| 上饶市| 大田县| 韶山市| 当阳市| 普陀区| 灵璧县| 栾城县| 渭源县| 石屏县| 漳浦县| 大埔区| 凌云县| 桦川县| 山丹县| 增城市| 福海县| 新野县| 崇左市| 秦皇岛市| 津市市| 望城县| 林周县| 视频|