编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截去半个,列如“人ABC”4应该截取为“人AB”,输入“人ABC们DEF”6,应该输出“人ABC”而不是“人ABC+半个们”。
package cn.exercise.algorithmsTest;
/**
* 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截去半个,
* 列如“人ABC"4应该截取为“人AB”,输入“人ABC们DEF”6,应该输出“人ABC”而不是“人ABC+半个们”。
*
* @author 小豪
*
*/
public class Test13 {
public static boolean isChinese(char c) {
String sb = String.valueOf(c);
return sb.getBytes().length > 1 ? true : false;
}
public String truncateStr(String str, int len) {
if (str == null || str.equals("") || len == 0) {
return "";
}
char[] charArr = str.toCharArray();
StringBuilder sb = new StringBuilder("");
int count = 0;
for (char cc : charArr) {
if (count < len) {
if (isChinese(cc)) {
if (count + 1 == len) {
return sb.toString();
}
count = count + 2;
sb = sb.append(cc);
} else {
count = count + 1;
sb = sb.append(cc);
}
} else {
break;
}
}
return sb.toString();
}
public static void main(String[] args) {
Test13 a = new Test13();
String sb = "人ABC们DEF";
System.out.println(a.truncateStr(sb, 6));
}
}
运行结果 人ABC