问题:请编写一个函数,完成可以按GBK字节数分割字符串的功能(要求遇到中文不能拆成半个,这样会拆成乱码。)
如:splitByBytes(“中文版Java”,5),得到[“中文”],splitByBytes(“中文版Java”,8)得到[“中文版Ja”]
public static ArrayListsplitByBytes(String src,int bytes){}
答案:
public static void main(String[] args) {
String splitStringList = splitByBytes("中文版Java", 5);
System.out.println("splitStringList:" + splitStringList);
}
public static String splitByBytes(String src,int bytes){
if(src == null) {
return "the String is null";
}
String newSrc = src.substring(0, src.length()<bytes ? src.length() : bytes);
int newByte = 0;
try {
newByte = newSrc.getBytes("GBK").length;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
while(newByte > bytes) {
int length = newSrc.length();
int a = --length;
System.out.println(a);
newSrc = src.substring(0, a);
try {
newByte = newSrc.getBytes("GBK").length;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return newSrc;
}
输出:
splitStringList:中文
splitStringList:中文版Ja