无乱码截取汉字字母数字混合字符串
其实思路很简单,一个汉字占两个字节,其他英文字母占一个,故,只要截的地方不在那个汉字的‘中间’就行了。
思路:奖字符串字节化,转化为字节数组,统计到限制长度左右的汉字数以及其他字母数,最后再来取舍。
其实思路很简单,一个汉字占两个字节,其他英文字母占一个,故,只要截的地方不在那个汉字的‘中间’就行了。
思路:奖字符串字节化,转化为字节数组,统计到限制长度左右的汉字数以及其他字母数,最后再来取舍。
public class SubString {
private String target;
public static String getSubString(String str,int limitLen)
{
String sub = null;
int len = str.length();
byte[] bytes = str.getBytes();
int num=0;
for(int i=0;i<bytes.length;i++){
if(bytes[i]<0)
num+=2;
else
num++;
if(num >= limitLen)
break;
}
if(num > limitLen){
num-=2;
}
sub = new String(bytes,0,num);
return sub;
}
public static void main(String[] args)
{
String target = "asier有法可依的要jdi在f我i的23423";
System.out.println(getSubString(target, 7));
System.out.println(getSubString(target, 8));
System.out.println(getSubString(target, 9));
}
}