• JS按字节截取字符长度实例


    处理过长的字符串,截取并添加省略号
     * 注:半角长度为1,全角长度为2
     * 
     * pStr:字符串
     * pLen:截取长度
     * 
     * return: 截取后的字符串
     *

    代码如下:

    function autoAddEllipsis(pStr, pLen) { 

        var _ret = cutString(pStr, pLen); 
        var _cutFlag = _ret.cutflag; 
        var _cutStringn = _ret.cutstring; 

        if ("1" == _cutFlag) { 
            return _cutStringn + "..."; 
        } else { 
            return _cutStringn; 
        } 


    *
     * 取得指定长度的字符串
     * 注:半角长度为1,全角长度为2
     * 
     * pStr:字符串
     * pLen:截取长度
     * 
     * return: 截取后的字符串
     *

    代码如下:

    function cutString(pStr, pLen) { 

        // 原字符串长度 
        var _strLen = pStr.length; 

        var _tmpCode; 

        var _cutString; 

        // 默认情况下,返回的字符串是原字符串的一部分 
        var _cutFlag = "1"; 

        var _lenCount = 0; 

        var _ret = false; 

        if (_strLen <= pLen/2) { 
            _cutString = pStr; 
            _ret = true; 
        } 

        if (!_ret) { 
            for (var i = 0; i < _strLen ; i++ ) { 
                if (isFull(pStr.charAt(i))) { 
                    _lenCount += 2; 
                } else { 
                    _lenCount += 1; 
                } 

                if (_lenCount > pLen) { 
                    _cutString = pStr.substring(0, i); 
                    _ret = true; 
                    break; 
                } else if (_lenCount == pLen) { 
                    _cutString = pStr.substring(0, i + 1); 
                    _ret = true; 
                    break; 
                } 
            } 
        } 

        if (!_ret) { 
            _cutString = pStr; 
            _ret = true; 
        } 

        if (_cutString.length == _strLen) { 
            _cutFlag = "0"; 
        } 

        return {"cutstring":_cutString, "cutflag":_cutFlag}; 


    *
     * 判断是否为全角
     * 
     * pChar:长度为1的字符串
     * return: tbtrue:全角
     *          false:半角
     *

    代码如下:

    function isFull (pChar) {
      for (var i = 0; i < pChar.strLen ; i++ ) {     
        if ((pChar.charCodeAt(i) > 128)) { 
            return true; 
        } else { 
            return false; 
        }
    }
    }


    用例:

    复制代码代码如下:

    testStr = "测试1字符串";
    autoAddEllipsis(testStr, 1); // "测..."
    autoAddEllipsis(testStr, 2); // "测..."
    autoAddEllipsis(testStr, 3); // "测..."
    autoAddEllipsis(testStr, 4); // "测试..."
    autoAddEllipsis(testStr, 5); // "测试1..."
    autoAddEllipsis(testStr, 6); // "测试1..."
    autoAddEllipsis(testStr, 7); // "测试1字..."
  • 相关阅读:
    hadoop基础学习---数据管理策略
    hadoop基础学习---基本概念
    hadoop配置
    linux配置java环境
    Linux使用expect实现自动登录的脚本
    机器学习系列-寒小阳
    深度学习与计算机视觉系列-寒小阳
    深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全
    深度学习与计算机视觉(11)_基于deep learning的快速图像检索系统
    深度学习与计算机视觉系列(10)_细说卷积神经网络
  • 原文地址:https://www.cnblogs.com/zhoujianying/p/8124225.html
Copyright © 2020-2023  润新知