网站建议:179001057@qq.com

截取字符串

技术2022-05-12  0

在项目中,经常显示时候要截取字符.一直用的是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; }

/**  * 测试方法* / public static void main(String[] args) {    }  }}


最新回复(0)