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
|