编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串

最近挺火的一道面试题。
public class Test {
	public static void main(String[] args) {
		String str = "汉字ABD不是ABC";
		System.out.println(splitStr(str, 8));
	}
	// 判断是不是汉字
	public static boolean isCh(char c) {
		String temp = String.valueOf(c);
		return temp.getBytes().length>1?true:false;
	}
	// 获取字符串的字节数
	public static int getStrLen(String str) {
		int len = 0;
		char[] cs = str.toCharArray();
		for (int i = 0; i < cs.length; i++) {
			if (isCh(cs[i])){
				len += 2;
			} else {
				len += 1;
			}
		}
		return len;
	}
	/**
	 * 截取字符串
	 * 
	 * @param inputStr 输入的字符串
	 * @param len 指定长度的字节数
	 */ 
	public static String splitStr(String inputStr, int len) {   
		StringBuffer sb = new StringBuffer();
		int length = getStrLen(inputStr);
		// 如果是空字符串或者字节数大于整个字符串的字节数,则直接返回空字符串
		if (inputStr == null || inputStr.equals("") || len>length) {
			return "";
		}
		// 如果指定长度的字节数等于0,则返回字符串
		if (len == 0) {
			return inputStr;
		}
		char[] cs = inputStr.toCharArray();
		int temp = 0;
		for (char c : cs) {
			if (temp < len) {
				if (isCh(c)) {
					temp = temp + 2;
					sb.append(c);
				} else {
					temp = temp + 1;
					sb.append(c);
				}
			} else {
				break;
			}
		}
	    return sb.toString();   
	}   
}

你可能感兴趣的:(C++,c,面试,C#)