JAVA和JS截取固定长度字符串,超过的自动加省略号

本文提供了一种用Java和JavaScript实现的字符串截取方法,能够处理包括中文在内的多种字符集,并在超过设定长度时添加省略号。代码适用于网页或应用程序中对字符串长度进行限制的需求。

直接贴代码!

JAVA

public String getLenStr(String str,int len){
			String returnStr="";
			int str_length = 0;
	   		int str_len = 0;
		  	String str_cut = new String();
		  	str_len = str.length();
		  	for(int i = 0;i<str_len;i++){
				char a = str.charAt(i);
				str_length++;
				if(escape(a+"").length() > 4)
				{
			 		//中文字符的长度经编码之后大于4
			 		str_length++;
			 	}
			 	str_cut = str_cut.concat(a+"");
				 if(str_length>=len)
			 	{
			 		str_cut = str_cut.concat("...");
				 	returnStr=str_cut;
				 	break;
				}
			}
			//如果给定字符串小于指定长度,则返回源字符串;
			if(str_length<len){
		 		returnStr=str;
			}
			return returnStr;
		}
		private static String  escape (String src) {
		   int i;
		   char j;
		   StringBuffer tmp = new StringBuffer();  
		   tmp.ensureCapacity(src.length()*6);  
		   for (i=0;i<src.length() ;i++ )  {
		      j = src.charAt(i);   
		      if (Character.isDigit(j) || Character.isLowerCase(j) || Character.isUpperCase(j))
		          tmp.append(j);
		      else    if (j<256)    {
		          tmp.append( "%" );
		          if (j<16)
		             tmp.append( "0" );
		          tmp.append( Integer.toString(j,16) );
		      }    else    {
		          tmp.append( "%u" );    
		      tmp.append( Integer.toString(j,16) );
		     }
		   }  
		   return tmp.toString();
		}

 

JS

function cutstr(str, len) {
    var str_length = 0;
    var str_len = 0;
    str_cut = new String();
    str_len = str.length;
    for (var i = 0; i < str_len; i++) {
        a = str.charAt(i);
        str_length++;
        if (escape(a).length > 4) {
            //中文字符的长度经编码之后大于4  
            str_length++;
        }
        str_cut = str_cut.concat(a);
        if (str_length >= len) {
            str_cut = str_cut.concat("...");
            return str_cut;
        }
    }
    //如果给定字符串小于指定长度,则返回源字符串;  
    if (str_length < len) {
        return str;
    }
}

 

转载于:https://my.oschina.net/squan/blog/1498973

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值