李敏  
          日歷
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345
          統(tǒng)計(jì)
          • 隨筆 - 1
          • 文章 - 40
          • 評(píng)論 - 4
          • 引用 - 0

          導(dǎo)航

          常用鏈接

          留言簿(1)

          文章分類

          文章檔案

          相冊(cè)

          收藏夾

          它山之石

          聚賢莊

          搜索

          •  

          最新評(píng)論

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

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

            
            
          /**
             * 查找截取的字節(jié)中是否保留了一個(gè)漢字的單字節(jié)
             
          */
               
            
          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;
            }

            
            
          /**
             * 截取一個(gè)字符串中指定長度的字節(jié)(如果最后一位為一個(gè)漢字的單字節(jié)則進(jìn)行忽略)
             
          */
               
            
          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) 評(píng)論(0)  編輯  收藏 所屬分類: 算法
           
          Copyright © 李敏 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 巴南区| 沙洋县| 吉木萨尔县| 台安县| 莱阳市| 游戏| 耒阳市| 阜平县| 吴川市| 乐都县| 乡宁县| 库尔勒市| 巴彦淖尔市| 白银市| 兴化市| 仁化县| 平舆县| 陆河县| 常德市| 平江县| 浦城县| 阜阳市| 江源县| 朔州市| 渭南市| 永春县| 石河子市| 镇宁| 衡南县| 嘉义县| 松滋市| 延安市| 新泰市| 介休市| 济南市| 安丘市| 隆安县| 邻水| 怀集县| 来凤县| 壤塘县|