编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表)
例如:从“HM程序员”中截取2个字节是“HM”,截取4个则是“HM程”,截取3个字节也要是"HM"而不要出现半个中文
public class Test10 {
public String getString(String st,int k){
String str=null;
String st1=null;
String st2=null;
//将字符串转换成字符数组
char[]ch=st.toCharArray();
for(int i=1;i<ch.length;i++){
//将字符指定长度转换成字符串
st1=String.valueOf(ch, 0, i);
//获取字符串的字节数并与指定字节数相比
//如果字符串的字节数与指定字节数相等则返回该字符串
if(st1.getBytes().length==k){
str=st1;
break;
}
//若小于指定字符窜则在增加一个字符
else if(st1.getBytes().length<k){
st2=String.valueOf(ch, 0, i+1);
//若增加后的字符串与指定字节数相等则返回该字符串
if(st2.getBytes().length==k){
str=st2;
break;
}
//若大于则返回原来的字符串
else if(st2.getBytes().length>k){
str=st1;
break;
}
}
}
return str;
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
String st="afc我是";
Test10 t10=new Test10();
System.out.println(t10.getString(st, 3));
System.out.println(t10.getString(st, 4));
System.out.println(t10.getString(st, 5));
}
} |
|