字符串截取保证书汉字不会截取一半

字符串截取保证汉字不会截取一半

 遇到一个有意思的编程题,留作备用。截取字符串时候,里面有中文和字母相结合时候(如:abc我d是中df国人),怎么合理进行切割、只需要记住两点:

1、汉字的字节数<0;

2、汉字在gbk编码中,占用2个字节;在utf-8编码中,占用3个字节。

 

public static String split(String str,int len) throws UnsupportedEncodingException{
		byte[] bt = str.getBytes("gbk");
		int wordIndex = 0,chineseIndex = 0,count = 0;
		if(bt.length > len){
			for(int index = 0;index < len; index++){
				if(bt[index] < 0){                 //汉字的byte<0,在gbk编码,汉字占用两个字节;utf-8编码,汉字占三个字节。
					if(++count > 0 && count%2 == 0){    //如果字符集为utf-8,count%3。
						chineseIndex++;
					}
				}else{   //英文
					wordIndex++;
				}
			}
			return str.substring(0, wordIndex + chineseIndex);
		}else{
			return "字符截取数太大。";
		}
	}