zoukankan      html  css  js  c++  java
  • 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字..."
  • 相关阅读:
    linux下编译GDAL3.x(集成Proj和Geos等)
    CSS后代选择器、子元素选择器、相邻兄弟选择器区别与详解
    CSS hover伪类改变其他元素的样式
    PHP 删除数组指定元素
    CakePHP 调试方法 汇总
    Linux/Mac OS 在终端使用 code 命令打开项目 VSCode
    苹果 MacOS 安装 Source Code Pro
    MacOS 安装 Homebrew 错误处理 Connection refused
    修改 VSCode 终端 Terminal 的字体
    spring cloud gateway自定义过滤器
  • 原文地址:https://www.cnblogs.com/zhoujianying/p/8124225.html
Copyright © 2011-2022 走看看