1. 程式人生 > >截取字節數組形式的字符串,串中包含中文

截取字節數組形式的字符串,串中包含中文

light 一個 get 字節 如果 要求 test 大於 截取

描述

1、首先說一下各種字符的字節組成:

字符、字母和數字:由一個大於0的數字碼組成,比如1--49、A--65、b--98。即這三種類型長度為1字節。

漢字:由兩個小於0的數字碼組成,比如 “我”-- (-50,-46)、“們”--(-61,-57)。即中文長度為2字節。

2、解釋一下題幹

輸入是一個包含中文的字符串str,和一個截取長度i,要求把str截取i個字符長度輸出,但是如果末尾是半個中文,就舍棄掉。因為除了漢字以外的其他都是1字節長度,所以本題難度是處理中文的問題。

代碼

public void A(String str, int i){
		byte b[] = new byte[1024];
		int num = 0;
		b = str.getBytes();
		if(b[i-1]>0){
			System.out.println(new String(b, 0, i));
		}else {
			for(int j=0; j<i; j++){
				if(b[j]<0){
					num ++;
					num = num % 2;
				}else {
					num = 0;
				}
			}
			if(num == 0){
				System.out.println(new String(b, 0, i));
			}else {
				System.out.println(new String(b, 0, i-1));
			}
		}
	}

主函數:

public static void main(String[] args) {
		String str = "哈哈1Ab我們的田野";
		new testString().A(str, 10);
		
	}

輸出:

哈哈1Ab我

主函數中要求截取輸出10字節,那麽“哈哈1Ab我”的字節長度為 2+2+1+1+1+2 = 9,而後邊是一個漢字,也就是第10字節只是半個漢字,所以舍棄掉。

截取字節數組形式的字符串,串中包含中文