`
lishiguang
  • 浏览: 191540 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用 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));

}

 

 

分享到:
评论
1 楼 shugengen 2012-01-13  

相关推荐

Global site tag (gtag.js) - Google Analytics