问题描述:
编写一个截取字符串的函数,输入为一个字符串和字节数,
输出为按字节截取的字符串。但是要保证汉字不被截半个,
如"我ABC", 4,应该截为"我A",
输入"我ABC汉DEF",7,应该输出为"我ABC"而不是"我ABC+汉的半个"。
思路:
1.英文只占一个字节,中文占两个字节或者3个字节
2. 汉字的ASCII码均为负数
private static String subStr(String str, int num) {
if (null == str || str.length() == 0 || num <= 0) {
return "";
}
int len = str.length(), sum = 0;
StringBuilder sb = new StringBuilder(num);
for (int i = 0; i < len; i++) {
String temp = String.valueOf(str.charAt(i));
// 汉字转换成byte数组后,长度大于1,且字节数组内的值均小于0
int tempLen = temp.getBytes().length;
sum += tempLen;
// 长度超限 跳出循环
if (sum > num){
break;
}
sb.append(temp);
}
return sb.toString();
}