public class StringUtils {
public static void main(String[] args) {
String or = "test";
System.out.println(getSubString(or,10));
String or2 = "aa我a谇";
System.out.println(getSubString(or2,6));
}
public static String getSubString(String original, int len){
char[] temp = original.toCharArray();
int realLength = 0;
for(char c : temp){
if(isChineseChar(c))
realLength +=2;
else
realLength ++;
}
int count = 0;
StringBuffer sb = new StringBuffer();
for(int i=0;i<realLength && i<original.length();i++){
if(isChineseChar(temp[i])){
count +=2;
}else
count ++;
if(count>len)
break;
sb.append(String.valueOf(temp[i]));
}
return sb.toString();
}
public static boolean isChineseChar(char c){
if((int)c>255)
return true;
return false;
}
}
再优化一下,把两个for循环合并成一个
public static String getSubString(String original, int len){
int realLen = 0;
StringBuffer sb = new StringBuffer();
for(char c : original.toCharArray()){
if(isChineseChar(c))
realLen+=2;
else
realLen++;
if(realLen>len)
break;
sb.append(String.valueOf(c));
}
return sb.toString();
}