读书人

用 java回截取中文英文字符串,过多的用

发布时间: 2012-09-21 15:47:26 作者: rapoo

用 java来截取中文英文字符串,过多的用省略号显示

用 java来截取中文英文字符串,过多的用省略号显示

?

需求:任意一个字符串 比如"abc我爱中国" 大于12个字节的 要截取掉,用 ... 来结尾, 最终结果不能大于12个字节 ?注 中文占2个字节

?

public static String subStringCN(final String str, final int maxLength) {

if (str == null) {

return str;

}

String suffix = "...";

int suffixLen = suffix.length();

final StringBuffer sbuffer = new StringBuffer();

final char[] chr = str.trim().toCharArray();

int len = 0;

for (int i = 0; i < chr.length; i++) {

if (chr[i] >= 0xa1) {

len += 2;

} else {

len++;

}

}

if(len<=maxLength){

return str;

}

len = 0;

for (int i = 0; i < chr.length; i++) {

?

if (chr[i] >= 0xa1) {

len += 2;

if (len + suffixLen > maxLength) {

break;

}else {

sbuffer.append(chr[i]);

}

} else {

len++;

if (len + suffixLen > maxLength) {

break;

}else {

sbuffer.append(chr[i]);

}

}

}

sbuffer.append(suffix);

return sbuffer.toString();

}

?

public static void main(String[] args) {

?

String st2 = "是个好人啊,是个好人啊";

System.out.println(subStringCN(st2, 12));

?

String st3 = "是个好人啊 persen";

System.out.println(subStringCN(st3, 12));

?

String st4 = " persen是个好人啊";

System.out.println(subStringCN(st4, 12));

String st1 = "个好人啊";

System.out.println(subStringCN(st1, 12));

?

String st0 = "sdddddddddddddddddddd";

System.out.println(subStringCN(st0, 12));

}

?

?

读书人网 >编程

热点推荐