首页 JavaScriptJS知识点正文

超出省略号—js版(实用)

一个超出字数用省略号代替的函数分享:
相信大家都会:一般纯css的写法,但是貌似只能单行,写法如下:
overflow:hidden; white-space:nowrap; text-overflow:ellipsis;
不过如果多行的话……,当然后台可以实现,但是js也可以封装一个函数,来看下!

/*
*    @description 截取字符串,中文字算两个,以及是否需要三个省略点代替
*    @param str    要截取的字符串
*    @param len    要截取的长度    
*    @param hasDot    是否需要...代替
*    @return {string}
*/
function subStr(str,len,hasDot){
    //var cnReg=/[^\x00-\xff]/g;
    var cnReg=/[\u4e00-\u9fa5]/g;  //汉字的正则
    var newStr=''; //转化完以后的新字符串
    var newLen=0;  //转化玩以后新字符串的长度
    var allLen=str.replace(cnReg,'**').length; //原字符串的总长度
    console.log(allLen);
    for(var i=0; i<str.length; i++){
        if(cnReg.test(str.charAt(i))){ //检测如果是汉字
            newLen+=2;    
        }else{  //不是汉字
            newLen+=1;    
        }
        newStr+=str.charAt(i);  //此时的汉字存到新的字符串中
        if(newLen>=len){  //如果新字符串的长度大于用户要求截取的长度,则跳出循环
            break;    
        }
    }
    
    if(hasDot && allLen>len){ //需要加点,并且字符串总长度大于外界传进来的len
        newStr+='...';    
    }
    return newStr;
}


版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论