分享

java 实现中英文混时得到长度 过长字符替换 - tianwaishan的专栏 - CS...

 仙人不留果 2009-12-01

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

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tianwaishan/archive/2009/11/30/4908342.aspx

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多