字符串截取保证书汉字不会截取一半
字符串截取保证汉字不会截取一半
遇到一个有意思的编程题,留作备用。截取字符串时候,里面有中文和字母相结合时候(如: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 "字符截取数太大。"; } }