切り取り文字列(漢字を含む)
プログラミング:文字列を切り取る関数を作成し、文字列とバイト数を入力し、バイト単位で切り取る文字列として出力します.しかし、漢字が半分に切られないことを保証するには、「私ABC」4のように、「私AB」に切るべきで、「私ABC漢DEF」を入力し、6、「私ABC+漢の半分」ではなく「私ABC」に出力すべきだ.
public class SplitStr {
/*
*
*
* @param cc
*/
public static boolean strIfChinese(char cc) {
String ccStr = String.valueOf(cc);
return ccStr.getBytes().length > 1 ? true : false;
}
/*
*
*
* @param str
*/
public static int strTotalLen(String str) {
int len = 0;
char[] chr = str.toCharArray();
for (char cc : chr) {
if (!strIfChinese(cc)) {
len = len + 1;
} else {
len = len + 2;
}
}
return len;
}
/*
*
* @param inputStr
*
* @param len
*/
public String retStr(String inputStr, int len) {
// "", "";
if (inputStr == null || inputStr.equals(""))
return "";
// len 0
if (len == 0 || len > strTotalLen(inputStr))
return inputStr;
char[] chr = inputStr.toCharArray();
String str="";
int count = 0;
for(char cc:chr){
if (count < len) {
if (strIfChinese(cc)) {
if (count + 1 == len)
return str;
count = count + 2;
str = str + String.valueOf(cc);
} else {
count = count + 1;
str = str + String.valueOf(cc);
}
}
}
return str;
}
/**
* @param args
*/
public static void main(String[] args) {
/*
* String str = "a bc"; char[] chr = str.toCharArray(); byte[] byt =
* str.getBytes(); for (byte bb : byt) { System.out.println(bb); }
*
* for (char cc : chr) { System.out.println(cc); }
*/
// System.out.println(chr.length + "&&&" + byt.length + "%%%" + by);
SplitStr splitStr = new SplitStr();
String str = " b c";
System.out.println(splitStr.retStr(str, 5));
}
}