package java面试题解惑系列;
import java.io.UnsupportedEncodingException;
/*
* 按字节截取含有中文汉字的字符串
*/
public class Test_008 {
public static void main(String[] args) throws UnsupportedEncodingException {
String str = "ab中d国ef王g";
for (int i = 1; i <= 12; i++) {
Test_008.subStringM(str, i);
}
}
/**
* 截取字符串
*
* @param str
* 需要截取的字符串
* @param count
* 截取字符的长度
* @throws UnsupportedEncodingException
*/
public static void subStringM(String str, int count) throws UnsupportedEncodingException {
int num = 0;// 已经截取字符的长度
int length = 0;// 每个字符的长度
StringBuffer sb = new StringBuffer();
char ch[] = str.toCharArray();
for (int i = 0; i < ch.length; i++) {
length = String.valueOf(ch[i]).getBytes("GBK").length;
num += length;
if (num > count) {
break;
}
sb.append(ch[i]);
}
System.out.println("截取 " + count + " 字符 结果:\t" + sb.toString());
}
}
输出结果:
截取 1 字符 结果: a
截取 2 字符 结果: ab
截取 3 字符 结果: ab
截取 4 字符 结果: ab中
截取 5 字符 结果: ab中d
截取 6 字符 结果: ab中d
截取 7 字符 结果: ab中d国
截取 8 字符 结果: ab中d国e
截取 9 字符 结果: ab中d国ef
截取 10 字符 结果: ab中d国ef
截取 11 字符 结果: ab中d国ef王
截取 12 字符 结果: ab中d国ef王g