隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
          數(shù)據(jù)加載中……

          在Java中按字節(jié)獲得字符串長度的兩種方法

          本文為原創(chuàng),如需轉(zhuǎn)載,請注明作者和出處,謝謝!

              由于Java是基于Unicode編碼的,因此,一個漢字的長度為1,而不是2。但有時需要以字節(jié)單位獲得字符串的長度。例如,“123abc長城”按字節(jié)長度計算是10,而按Unicode計算長度是8。為了獲得10,需要從頭掃描根據(jù)字符的Ascii來獲得具體的長度。如果是標準的字符,Ascii的范圍是0至255,如果是漢字或其他全角字符,Ascii會大于255。因此,可以編寫如下的方法來獲得以字節(jié)為單位的字符串長度。
              public int getWordCount(String s)
              {
                  
          int length = 0;
                  
          for(int i = 0; i < s.length(); i++)
                  {
                      
          int ascii = Character.codePointAt(s, i);
                      
          if(ascii >= 0 && ascii <=255)
                          length
          ++;
                      
          else
                          length 
          += 2;
                          
                  }
                  
          return length;
                  
              }

              當然,也可以采用正則表達式來簡化上面的方法,代碼如下:
              public  int getWordCount(String s)
              {

                  s 
          = s.replaceAll("[^\\x00-\\xff]""**");
                  
          int length = s.length();
                  
          return length;
              }
              上面代碼的基本原理是將字符串中所有的非標準字符(雙字節(jié)字符)替換成兩個標準字符(**,或其他的也可以)。這樣就可以直接例用length方法獲得字符串的字節(jié)長度了。





          Android開發(fā)完全講義(第2版)(本書版權(quán)已輸出到臺灣)

          http://product.dangdang.com/product.aspx?product_id=22741502



          Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


          新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

          posted on 2010-04-11 10:53 銀河使者 閱讀(22665) 評論(3)  編輯  收藏 所屬分類: java 原創(chuàng)

          評論

          # re: 在Java中按字節(jié)獲得字符串長度的兩種方法  回復(fù)  更多評論   

          return String.getByte().length() ;
          2010-04-13 13:01 | 深藍色心情

          # re: 在Java中按字節(jié)獲得字符串長度的兩種方法  回復(fù)  更多評論   

          貌似你這個方法不行,是按一個漢字三個字符來算的。@深藍色心情
          2014-04-17 11:15 | Hety

          # re: 在Java中按字節(jié)獲得字符串長度的兩種方法  回復(fù)  更多評論   

          @深藍色心情
          return String.getByte().length() ;
          這個方法簡單是簡單,但這個方法多分配了一個byte[]的buffer.
          有些時候,只為了獲得字節(jié)長度而獲取一個大字符串的buffer出來是非常不恰當?shù)?
          2015-09-09 14:58 | 劉旭
          主站蜘蛛池模板: 乌兰浩特市| 海安县| 怀化市| 镇原县| 饶阳县| 通渭县| 葫芦岛市| 洪江市| 富蕴县| 务川| 乌拉特后旗| 大连市| 永州市| 商丘市| 乡城县| 封丘县| 阜宁县| 巍山| 合江县| 南岸区| 普兰店市| 平罗县| 金川县| 万荣县| 连山| 罗山县| 清苑县| 资阳市| 禄劝| 长海县| 泸溪县| 勐海县| 嘉义市| 阳谷县| 凤冈县| 威远县| 澳门| 崇信县| 定远县| 河源市| 舞钢市|