分享一个标准的截取中英文字符串长度的函数

Posted By admin | Date: 2017-11-02 23:18:15 | 已有 0 条评论 | 已有 994 人阅读过

包含中英文混合的字符串

        function substr(str, len, addDot){
            addDot = typeof(addDot) == "undefined" ? true : addDot;
            var pat = /[^\x00-\xff]/g;
            var p = /[^\x00-\xff]/;
            var l = str.replace(pat, "xx").length;
            if(len >= l){
                return str;
            }
            //当前累加的单字节字符长度
            var targetLen = 0;
            //截取尾部字符串下标
            var end = 0;
            for(var i = 0, strLength = str.length; i < strLength; i++){
                var s = str.charAt(i);
                if(p.test(s)){
                    targetLen += 2;
                }else{
                    targetLen += 1;
                }
                //累加长度超过截取长度,取当前索引
                if(targetLen >= len){
                    end = i;
                    break; 
                }

            }
            return str.slice(0, end + 1) + (addDot ? "..." : "");
        }

       
        //---> 祖a国
        console.log(substr("祖a国啊asv中国", 4));
        //---> 祖a国啊
        console.log(substr("祖a国啊asv中国", 7));

 

如果觉得此内容对您的学习有所帮助,您可以支付宝捐赠一下。

支付宝账号 : weizeyan52@126.com

评论

文明社会,从理性发言开始。谢绝地域攻击。