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

本文介绍了一个Java方法,用于处理字符串截取的问题。该方法可以将超过指定长度(包含中文字符)的字符串进行截断,并以省略号结尾。通过这种方式确保字符串的展示既完整又紧凑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值