首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JAVA 兑现截取字符串

2012-10-27 
JAVA 实现截取字符串/** *该方法用于:截取字符串 *使用技巧: *假如要截取长度相当于10个中文汉字的字符串,

JAVA 实现截取字符串

/** *该方法用于:截取字符串 *使用技巧: *假如要截取长度相当于10个中文汉字的字符串,超出用".."显示,调用subString(str,19,".."); *如果调用subString(str,20,".."),遇到包含奇数个单字节字符如a/b/c/d的情况下,将会多截一个字; * @param str * @param toCount 字节数 a--1字节,中文汉字--2字节,(汉字数*2-1) * @param more * @return */public static String subString(String str, int toCount,String more)    {String ss="";if(null==str||"".equals(str))return "";try {byte[] bytes = str.getBytes("Unicode");int n = 0; // 表示当前的字节数int i = 2; // 要截取的字节数,从第3个字节开始for (; i < bytes.length && n <=toCount; i++) {if (i % 2 == 1) {n++; // 在UCS2第二个字节时n加1} else {// 当UCS2编码的第一个字节不等于0时,该UCS2字符为汉字,一个汉字算两个字节if (bytes[i] != 0) {n++;}}}// 如果i为奇数时,处理成偶数if (i % 2 == 1) {// 该UCS2字符是汉字时,去掉这个截一半的汉字if (bytes[i - 1] != 0)i = i -1;// 该UCS2字符是字母或数字,则保留该字符elsei = i + 1;}ss= new String(bytes, 0, i, "Unicode");if(toCount<bytes.length-2)ss+=more;//System.out.println(bytes.length+"--->"+toCount);} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}return ss;    }

热点排行