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

时间:2022-06-01 20:05: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;
}