Java抽出文字列練習問題

1170 ワード

入力バイト単位で切り取った文字列
必要:
文字列を切り取る関数を作成し、文字列とバイト数を入力し、バイトで切り取った文字列として出力します.しかし、漢字が半分に切られないことを保証するには、「私ABC」4のように、「私AB」に切るべきで、「私ABC漢DEF」を入力し、6、「私ABC+漢の半分」ではなく「私ABC」に出力すべきだ.
考え方:
  • すべてが漢字であればそのまま切り取ります.
  • 文字の漢字混合であれば、切り取り範囲内の漢字文字の個数を統計し判断し、奇数-1が逆に切り取れば直接切り取る.
  •     /*
    	 *             ,            ,            。 
    	 *             , “ ABC”4,    “ AB”,
    	 *   “ ABC DEF”,6,     “ ABC”   “ ABC+    ”
    	 */
    	private static String SpitString(String str, int count) {
    		if (count / 2 > str.length()) {
    			System.out.println("             ");
    			return null;
    		}
    		String reg = "^[\\u4e00-\\u9fa5]{0,}$";
    		boolean result = str.matches(reg);
    
    		//          fasle:      true:     
    		byte[] ch = null;
    		if (result) {
    			str = str.substring(0, count / 2);
    			System.out.println(str);
    			return str;
    		} else {
    			int number = 0;
    			ch = str.getBytes();
    			for (int c = 0; c < count; c++) {
    				if (ch[c] < 0) {
    					number++;
    				}
    			}
    			//   -1
    			if(number%2==1) {
    				count--;
                 }	
    			System.out.println("       :" + new String(ch, 0, count));
    			return new String(ch, 0, number);			
    		}
    	}