Java抽出文字列練習問題
1170 ワード
入力バイト単位で切り取った文字列
必要:
文字列を切り取る関数を作成し、文字列とバイト数を入力し、バイトで切り取った文字列として出力します.しかし、漢字が半分に切られないことを保証するには、「私ABC」4のように、「私AB」に切るべきで、「私ABC漢DEF」を入力し、6、「私ABC+漢の半分」ではなく「私ABC」に出力すべきだ.
考え方:すべてが漢字であればそのまま切り取ります. 文字の漢字混合であれば、切り取り範囲内の漢字文字の個数を統計し判断し、奇数-1が逆に切り取れば直接切り取る.
必要:
文字列を切り取る関数を作成し、文字列とバイト数を入力し、バイトで切り取った文字列として出力します.しかし、漢字が半分に切られないことを保証するには、「私ABC」4のように、「私AB」に切るべきで、「私ABC漢DEF」を入力し、6、「私ABC+漢の半分」ではなく「私ABC」に出力すべきだ.
考え方:
/*
* , , 。
* , “ 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);
}
}