1. 程式人生 > >java 實現中英文混時得到長度 過長字元替換

java 實現中英文混時得到長度 過長字元替換

java 程式碼實現

 public static boolean isLetter(char c) { 
                 int k = 0x80; 
                 return c / k == 0 ? true : false; 
             } 
          
             /**
              * 得到一個字串的長度,顯示的長度,一個漢字或日韓文長度為2,英文字元長度為1
              * 
              * @param s 需要得到長度的字串
              * @return i得到的字串長度
              */ 
             public static int strlength(String s) { 
                 if (s == null) 
                     return 0; 
                 char[] c = s.toCharArray(); 
                 int len = 0; 
                 for (int i = 0; i < c.length; i++) { 
                     len++; 
                     if (!isLetter(c[i])) { 
                         len++; 
                     } 
                 } 
                 return len; 
             } 
          
             /**
              * 擷取一段字元的長度,不區分中英文,如果數字不正好,則少取一個字元位
              * 
              * 
              * @param  origin 原始字串
              * @param len 擷取長度(一個漢字長度按2算的)
              * @param c 字尾           
              * @return 返回的字串
              */ 
             public static String tosubstring(String origin, int len,String c) { 
                 if (origin == null || origin.equals("") || len < 1) 
                     return ""; 
                 byte[] strByte = new byte[len]; 
                 if (len > strlength(origin)) { 
                     return origin+c; 
                 } 
                 try { 
                     System.arraycopy(origin.getBytes("GBK"), 0, strByte, 0, len); 
                     int count = 0; 
                     for (int i = 0; i < len; i++) { 
                         int value = (int) strByte[i]; 
                         if (value < 0) { 
                             count++; 
                         } 
                     } 
                     if (count % 2 != 0) { 
                         len = (len == 1) ? ++len : --len; 
                     } 
                     origin="";
                     return new String(strByte, 0, len, "GBK")+c; 
                 } catch (UnsupportedEncodingException e) { 
                     throw new RuntimeException(e); 
                 } 
             }