天天看点

java 实现中英文混时得到长度 过长字符替换

java 代码实现

 public static boolean isLetter(char c) { 

                 int k = 0x80; 

                 return c / k == 0 ? true : false; 

             } 

             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; 

             } 

             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); 

                 } 

             }