编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
class SplitString {
public void subString(String str, int num) {
char[] charArray = str.toCharArray();
String subStr = "";
int index = 0;
for (int i = 0, j = 0; i < num;) {
char tempchar = charArray[j];
if (Character.getType(tempchar) == Character.OTHER_LETTER) {
// 如果这个字符是一个汉字
i = i + 2;
if (i > num) {
// 如果num正好截取到半个汉字的时候,跳过此次for循环。
// 如果num正好截取到一个完整的汉字的时候,继续执行下面的index++等语句。
if (i == (num + 1)) {
continue;
}
}
}
else {
i++;
}
index++;
j++;
}
subStr = str.substring(0, index);
System.out.println("the result is : " + subStr + " /" + num);
}
public static void main(String[] args) {
String str = "AB我是C中国人DEF";
SplitString splitString = new SplitString();
splitString.subString(str, 10);
}
}
虽然感觉程序写得不太好,有个地方不太容易懂,不过输出的结果是正确的。欢迎大家改进。