Javaは中国語を含む文字列をバイト数で切り取る

1155 ワード

要件:
文字列を切り取る関数を作成し、文字列とバイト数を入力し、バイトで切り取った文字列として出力します.しかし、漢字が半分に切られないことを保証するには、「私ABC」4のように、「私AB」に切るべきで、「私ABC漢DEF」を入力し、6、「私ABC+漢の半分」ではなく「私ABC」に出力すべきだ.

package MSB_Problems;

public class splitStringWithChinese {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = " zgh huohao";
		getString(s,6);
	}
	public static void getString(String s,int num){
		int k=0;
		String temp="";
		for (int i = 0; i <s.length(); i++)
		{	
			byte[] b=(s.charAt(i)+"").getBytes();
			k=k+b.length;
			if(k>num)
			{
				break;
			}
			temp=temp+s.charAt(i);			
		}	
		System.out.println(temp);
	}
}


中国語の漢字は1つが2バイト、英語が1バイト、例えばこのs文字列、占めるバイト数は13で、長さは11で、半分の漢字を切り取らないために、いつでも切り取り列が占めるバイト数を判断する必要がある.
(s.charAt(i)+"").getBytes().lengthは、この文字が占めるバイト数、例えばi=0を判断することができ、この式の結果は2、i=1であり、結果は1である.
なぜ「」をつけるのか、charをStringに変換することですね.の
String.valueOf(source.charAt(i))でもいいです.