love fish大鵬一曰同風起,扶搖直上九萬里

          常用鏈接

          統計

          積分與排名

          friends

          link

          最新評論

          含有中文字符串的截取問題!(轉)

          問題:
               字符串:music<<美麗的草原我的家>>。該字符串的長度即str.length()為:17,而目前需要存入數據庫對應的字段長度為:16。所以必須對字符串進行截取。而前16個字節中,“原”字只有半個。這樣存入數據庫確對會出現“?”。所以必須判斷是否是半個漢字,即只能存入“music<<美麗的草”。
          分析:
               漢字是雙字節編碼,它為了能夠與英文字符分開,每個字節的最高位一定為1。如果是漢字,那么這個字節就是小于0的。這個函數就是通過這一原理實現的。所以要通過getBytes()轉化為byte型,再比較與零的大小。 getBytes()是把一個字符串轉成一個byte數組,因為計算機的數據都是基于字符的,也就是說一個字符串實際上就是一個字符流,因此可以轉為字符數組。
          程序:
             public  static  String  getStr(String  src,  int  len)  {  
                 
          if  (src  ==  null)              return  null;  
                 
          if  (src.getBytes().length  <=  len)    return  src;  
           
                 
          byte[]  s  =  src.getBytes();  
                 
          int  flag  =  0;  
                 
          for(int  i=0;i<len;++i){  
                   
          if(s[i]  <  0)  flag++;    
                 }
            
                 
          if(flag%2!=0)  len--;          
           
                 
          byte[]  d  =  new  byte[len];  
                 System.arraycopy(s,  
          0,  d,  0,  len);  
                 
          return  new  String(d);  
             }
           

          posted on 2006-05-23 17:45 liaojiyong 閱讀(445) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 岐山县| 金溪县| 泰顺县| 承德县| 玉溪市| 普兰店市| 鄂托克前旗| 都昌县| 个旧市| 文安县| 宣城市| 富蕴县| 安新县| 乌兰浩特市| 抚州市| 永泰县| 土默特右旗| 额尔古纳市| 凤阳县| 来安县| 乐东| 奇台县| 曲麻莱县| 麦盖提县| 大方县| 巢湖市| 静海县| 加查县| 孟州市| 桦甸市| 三穗县| 平湖市| 梓潼县| 绥滨县| 深圳市| 石林| 广平县| 福建省| 阳信县| 清远市| 宜宾市|