最近整理之前自己学习Java时的一些代码笔记,可能都是一些比较基础的Java知识,在这里只是给需要的人参考一下。
要求描述:从一个包含汉字和其他字符的字符串中截取指定字节长度的字符串,不可以出现中文乱码,举个例子:
现有字符串:"我不道你xia我gsm是hai你shi那个地方那条街"
现在要求截取12个字节:如果直接截取12个字节就会出现中文乱码,所以按照我们的要求只能截取前11个字节,也即是:我不道你xia
如果要求截取13字节的话,就可以直接截取,最后结果为:我不道你xia我
package interview;
import java.io.IOException;
public class CutStringByConstantByte {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String str = "我不道你xia我gsm是hai你shi那个地方那条街";
System.out.println(CutStringMethod(str.getBytes("GBK"),12));
}
public static String CutStringMethod(byte[] bs,int count) {
// TODO Auto-generated method stub
int countNum = 0;
int cutNum = 0;
//汉字的2个字节的ASCII码都大于128,统计要截取的字节中汉字字节的数目
for (int i = 0; i < count;i++) {
if(bs[i]<0){ //判断是否为汉字
countNum++;
}
}
/*一个汉字是由两个字节组成的*/
if(countNum%2==0){ //如果汉字的字节数为偶数时,则截取的字节数不变
cutNum = count;
}else{ //如果汉字的字节数为奇数时,则截取的字节数要少一个
cutNum = count-1;
}
return new String(bs, 0, cutNum);
}
}