Java根据字节数截取完整字符串

时间:2022-05-10 20:18:48
Java中Unicode的字符串,给定一个字节数,要你截取一个字符串。比如”abc你好吗“,
如果指定的字节数是3,输出abc,如果指定的字节数为4,要舍弃不能构成一个字符的字节
,不能包含乱码?

public static void main(String[] args) throws UnsupportedEncodingException {
String a="abc你好吗fjh";
System.out.println(Test.getStr(a, 10));

}

public static String getStr(String str,int count) throws UnsupportedEncodingException{
String returnStr="";
int z=count;
for(int i=0;i<str.length();i++){
char c=str.charAt(i);
int d=String.valueOf(c).getBytes("GBK").length;
count=count-d;
if(count==0){//输入的字节数正好满足截取的字节数
returnStr=new String(str.getBytes("GBK"),0,z);
}
if(count==1){//输入的字节数不能正好满足截取的字节数,但是这个值绝对是超过1的值

returnStr=new String(str.getBytes("GBK"),0,z-1);
}
}

return returnStr;
}