java以字符为unicode编码 ,2个字节,汉字对应的int值大于255;因此可以通过str.charAt()获得某个字符进行判断;
注意:substring()不能实现字节截取,它截取的单位是字符;
//按字节截取 count个字节
public void substr(String str,int count){
char c;
int strlen = str.length();
String substr = "";
int truelen = 0;
for(int i=0;(i<strlen)&&(truelen<count);i++){
c = str.charAt(i);
if(c>255){//汉字
truelen+=2;
}else{ //字母
truelen++;
}
substr+=String.valueOf(c);
}
System.out.println(substr);
}
还有一种方法是将对应字符存入一个byte数组,一个汉字对应的byte数组长度为2;
代码如下:
public void substring(String str, int toCount){
int reInt = 0;
String reStr = "";
char[] tempChar = str.toCharArray();
for (int kk = 0; (kk < tempChar.length && toCount > reInt); kk++){
String s1 = str.valueOf(tempChar[kk]);
byte[] b = s1.getBytes();
reInt += b.length; //汉字的length为2
reStr += tempChar[kk];
}
System.out.println(reStr);
}