2016-10-13 00:16:48 点击量:55 标签: 收藏本文
在项目中,经常显示时候要截取字符.一直用的是substring这个方法,由于汉字和字符截取时候默认长度一样,造成有时侯截显示长度不一样.后来根据字符来截取,下面是使用的代码
- import java.io.UnsupportedEncodingException;
- public class CutString {
- /**
- * 判断是否是一个中文汉字
- *
- * @param c
- * 字符
- * @return true表示是中文汉字,false表示是英文字母
- * @throws UnsupportedEncodingException
- * 使用了JAVA不支持的编码格式
- */
- public static boolean isChineseChar(char c)
- throws UnsupportedEncodingException {
- // 如果字节数大于1,是汉字,以这种方式区别英文字母和中文汉字并不是十分严谨
- return String.valueOf(c).getBytes("GBK").length > 1;
- }
- /**
- * 按字节截取字符串
- *
- * @param orignal
- * 原始字符串
- * @param count
- * 截取位数
- * @return 截取后的字符串
- * @throws UnsupportedEncodingException
- * 使用了JAVA不支持的编码格式
- */
- public static String substring(String orignal, int count)
- throws UnsupportedEncodingException {
- // 原始字符不为null,也不是空字符串
- if (orignal != null && !"".equals(orignal)) {
- // 将原始字符串转换为GBK编码格式
- orignal = new String(orignal.getBytes(), "GBK");
- // 要截取的字节数大于0,且小于原始字符串的字节数
- if (count > 0 && count < orignal.getBytes("GBK").length-2) {
- StringBuffer buff = new StringBuffer();
- char c;
- for (int i = 0; i < count; i++) {
- c = orignal.charAt(i);
- buff.append(c);
- if (CutString.isChineseChar(c)) {
- // 遇到中文汉字,截取字节总数减1
- --count;
- }
- }
- buff.append("..");
- return buff.toString();
- }
- }
- return orignal;
- }
- /**
- * CuPlayer.com测试方法* /
- public static void main(String[] args) {
- }
- }
- }
我们是一家提供综合软件外包与弱电工程服务的技术公司。
业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。
公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室