/**
* @param args
*/
public static void main(String[] args) {
String str = "你好啊";
int a = 2;
System.out.println(splitString(str, a));
str = "你很a好";
a = 6;
System.out.println(splitString(str, a));
str = "abcdefg";
a = 7;
System.out.println(splitString(str, a));
}
private static String splitString(String str, int a) {
if (str != null && str.trim().length() > 0 && a > 0) {
// 取得该字符串的字节长度
int length = str.getBytes().length;
// 全部不包括汉字
if (str.length() == length) {
// 如果截取长度是字符串长度以内,就substring,否则就取这个字符串
if (a < str.length()) {
return str.substring(0, a);
} else {
return str;
}
} // 含有汉字
else {
StringBuffer sb = new StringBuffer();
// 截取算法 遍历字符串,并且监测a值
for (int i = 0; i < str.length() && a > 0; i++) {
// 如果是汉字算2个长度。
if (str.charAt(i) >= '\u4E00' && str.charAt(i) <= '\u9FA5') {
// 如果是汉字且不是最后一个字符,就加上,否则不加
if (a > 1) {
sb.append(str.charAt(i));
a -= 2;
}
// 不是汉字只算一个长度
} else {
sb.append(str.charAt(i));
a--;
}
}
return sb.toString();
}
}
return "输入有误";
}
}