字符串劈分(含中文)

题目:从含有中文字符的长度为N的字符串中截取M个字符,中文字符不能被分成两半。如从"我a爱中华abc我爱中国def,我ABC汉" 中取4个字符结果应该为"我a",而不是"我a爱"。

TIP:

* 将字符转码为GBK[一个中文包含两个字符且均小于0]
* 标识符标记前一个字节小于0作为辅助判断依据
* 当前字节小于0且前一次小于0【标识符判断】则为一个中文, 否则改变标识符的状态

public static int trimGBK(byte[] buf, int n) {

	int num = 0;

	boolean bChineseFirstHalf = false;

	for (int i = 0; i < n; i++) {

		if (buf[i] < 0 && !bChineseFirstHalf) {

			bChineseFirstHalf = true;

		} else {

			num++;

			bChineseFirstHalf = false;

		}

	}

	return num;

}

  

你可能感兴趣的:(字符串)