import java.io.UnsupportedEncodingException;
/**
* 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
* 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,
* 6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
*
*/
public class SplitString {
public static String splitStr(String s,int num){
if(num>=s.getBytes().length){
return s;
}
for(int i = 0;i<s.length();i++){
if(s.substring(i, i+1).getBytes().length == 1){
num--;
}else if(s.substring(i, i+1).getBytes().length == 2){
num--;
num--;
}
if(num == 0){
return s.substring(0, i+1);
}
if(num == -1){
return s.substring(0, i);
}
}
return null;
}
public static void main(String[] args) {
System.out.println(splitStr("我你ABC", 4));
}
}
//下面是第二种方法
public class SplitString {
public static void main(String[] args) throws UnsupportedEncodingException {
String str = "我们ABC";
int num = trimGBK(str.getBytes("GBK"),5);
System.out.println(str.substring(0, num));
}
public static int trimGBK(byte[] buf,int n){
int num = 0;
boolean bChineseFirstHalf = false;
for(int i = 0; i < n; i++){
System.out.println(buf[i]);
if(buf[i] < 0 && !bChineseFirstHalf){
bChineseFirstHalf = true;
}else{
num++;
bChineseFirstHalf = false;
}
}
return num;
}
}