像小弟这种情况怎样截取字符串?
比如我要求截取的字符串长度为N,注意这个N的单位可以说是“像素”,而不是真正的字符串长度。
问题是在像素中,中文长度是英文长度的两倍。而substring中认为它俩的长度是一样的!可是substring有没有像getBytes这样的东西。
请问我能怎么办??
谢谢!!
------解决方案--------------------你可以先getBytes啊
比方说
bytes []strBytes = str.getBytes();
然后再取数组的[x,x+N]不行吗?
------解决方案--------------------这样截不好是容易出乱码的,纠正楼上的错误byte []strBytes = str.getBytes();
------解决方案--------------------楼上的办法不行,这样取得的是str的unicode码,应该加上编码类型,比如
str.getBytes( "gbk ")
这样得到的是gbk码,这时的strBytes的长度应该就是楼主想要的了。
------解决方案-------------------- public static String substring(Object strObj, int length,String suffix){
if(strObj==null){
return " ";
}
String str = strObj.toString().trim();
char[] chars = str.toCharArray();
int index = 0;
int len = 0;
for (int i=0; i < chars.length; i++) {
char a = chars[i];
if (a > 255) {
len += 2; // 非半角字符宽度+2;
} else {
len++; // 半角字符宽度+1;
}
index += 1;
if (len > = length) {
return str.substring(0, index) + suffix;
}
}
return str;
}