Javaは中国語を含む文字列をバイト数で切り取る
1155 ワード
要件:
文字列を切り取る関数を作成し、文字列とバイト数を入力し、バイトで切り取った文字列として出力します.しかし、漢字が半分に切られないことを保証するには、「私ABC」4のように、「私AB」に切るべきで、「私ABC漢DEF」を入力し、6、「私ABC+漢の半分」ではなく「私ABC」に出力すべきだ.
中国語の漢字は1つが2バイト、英語が1バイト、例えばこのs文字列、占めるバイト数は13で、長さは11で、半分の漢字を切り取らないために、いつでも切り取り列が占めるバイト数を判断する必要がある.
(s.charAt(i)+"").getBytes().lengthは、この文字が占めるバイト数、例えばi=0を判断することができ、この式の結果は2、i=1であり、結果は1である.
なぜ「」をつけるのか、charをStringに変換することですね.の
String.valueOf(source.charAt(i))でもいいです.
文字列を切り取る関数を作成し、文字列とバイト数を入力し、バイトで切り取った文字列として出力します.しかし、漢字が半分に切られないことを保証するには、「私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))でもいいです.