• 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;
        };
  • 相关阅读:
    Windows环境下使用cygwin ndk_r9c编译FFmpeg
    android 开发环境搭建
    POJ 2559 单调栈入门,三种代码实现
    poj 2100 尺取法(尺度法)
    尺取算法 入门+模板+例题
    POJ 3579 Median 二分+思维
    POJ 3685 Matrix 二分套二分
    CodeForces 371C Hamburgers 二分
    HDU 4355 Party All the Time 三分算法
    HDU 3613 Best Reward Manacher算法
  • 原文地址:https://www.cnblogs.com/liuwt365/p/7016152.html
Copyright © 2020-2023  润新知