这是我测试题中的一个,编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表)
例如:从“HM程序员”中截取2个字节是“HM”,截取4个则是“HM程”,截取3个字节也要是"HM"而不要出现半个中文,这是我写的程序,指教一下:String defaultCharSet=Charset.defaultCharset().toString();
System.out.print(defaultCharSet);//显示默认的编码java默认是GBK
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String str="";
try {
while(!str.equals("end")){ //开始得到键盘输出,通过字符串end控制循环
System.out.print("输入一个混合的字符串:");
str = in.readLine();
byte b[]=str.getBytes("GBK");//将字符串转化成字节
byte c[]=new byte[1024];
int k=0;
for(int i=0;i<b.length;i++){//英文用一个字节表示在0-127范围内,中文由两个字节表示,第一个字节是负数
if(b<0) { //如果出现一个负数,就跳过这一个和下一个字节;
i++;
}
else{
c[k]=b;
k++;
}
}
System.out.println("去除中文的字符串:"+new String(c));//输出字符串
}
}catch (IOException e) {
e.printStackTrace();
}
|