非ASCII码,汉字的判断

package test;

public class MyInterview {

	/**
	 * 将输入字符串按照字节长度截断, 输出前部分的子字符串. 字节长度计算方法为:ASCII码字符为1,非ASCII码字符为2
	 * 
	 * @param s
	 *            输入字符串
	 * @param a
	 *            字节长度
	 * @return 输出字符串
	 */
	public static String test(String s, int a) {
		int b = 0;//保存在截断时非ASCII码的个数
		for (int i = 0; i < s.length(); i++) {
			if ((s.charAt(i) & 0xFF80) != 0) {// 非ASCII码字符
				b++;
			}
			if (b + i + 1 >= a) {//判断截断时机
				return s.substring(0, i + 1);
			}
		}
		return null;
	}

	/**
	 * 判断一个字符是否是汉字
	 */
	public static void test2() {
		String str = "中国caaahin好好学习天天向上 sfssfssdf ese";// 用于测试的字符串
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < str.length(); i++) {
			if (str.substring(i, i + 1).matches("[\u4e00-\u9fa5]")) {// 关键代码
				System.out.println(str.charAt(i) + ",为汉字");
				sb.append(str.charAt(i));// 选择所有的汉字并append到后面
			} else {
				System.out.println(str.charAt(i) + ",不为汉字");
			}
		}
		System.out.println(sb.toString());
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		for (int i = 1; i <= "好a12好s大家d好x1555".length() + 5; i++) {//+5是非ASCII码字符个数
			String s = test("好a12好s大家d好x1555", i);
			System.out.println("好a12好s大家d好x1555, " + i + "," + s);
		}
		test2();
	}
}

你可能感兴趣的:(ASCII)