js截取指定字節長度的字符串(jquery)


/* 
     * 截取指定字節長度的字符串 
     * 注:半角長度為1,全角長度為2
     * str:字符串 
     * len:截取長度
     * return: 截取后的字符串及是否截取的標記(擴展用)code=1 字符串截斷   code=0  字符串未截斷
     */  
    function cutStrByte(str, len){
        //校驗參數
        if(!str || !len){
            return {"cutStr":"","code":0};
        }
        var code = "1",// 默認返回code值,已截斷
            strLen = str.length,// 原字符串長度
            cutStr;
        //如果字符串長度小於截取長度的一半,則返回全部字符串
        if (strLen <= len/2){  
            cutStr = str;
            code = "0";
        }else{
            //遍歷字符串
            var strByteCount = 0;
            for (var i = 0; i < strLen ; i++ ){
                //中文字符字節加2  否則加1
                strByteCount += getByteLen(str.charAt(i));
                //i從0開始 截斷時大於len 只截斷到第i個
                if(strByteCount > len){
                    cutStr = str.substring(0, i);
                    break;
                }else if(strByteCount == len){
                    cutStr = str.substring(0, i + 1);
                    break;  
                }
            }
        }
        //cutstr為空,沒有截斷字符串
        if (!cutStr){
            cutStr = str;
            code = "0";
        }
        return {"cutStr":cutStr, "code":code};
    }
    
    /**
     * 獲取字節長度,全角字符兩個單位長度,半角字符1個單位長度
     */
     function getByteLen(val) {
        var len = 0;
        if(!val){
            return len;
        }
        for (var i = 0; i < val.length; i++) {
            if(!val[i]){
                continue;
            }
             // 全角
            if (val[i].match(/[^\x00-\xff]/ig) != null){
                len += 2;
            }else{
                len += 1;
            }
        }
        return len;
    };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM