字符串劈分(含中文)

題目:從含有中文字符的長度爲N的字符串中截取M個字符,中文字符不能被分紅兩半。如從"我a愛中華abc我愛中國def,我ABC漢" 中取4個字符結果應該爲"我a",而不是"我a愛"。java

TIP:blog

* 將字符轉碼爲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;
}
相關文章
相關標籤/搜索