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字..."
  • 相关阅读:
    java_八大数据类型
    java_实现Hello World
    Linux-ls命令
    Liunx下安装MySql
    Liunx-tail命令
    Liunx-history命令
    Linux-mkdir命令
    Linux-cp命令
    Linux-mv命令
    PBFT_拜占庭容错算法
  • 原文地址:https://www.cnblogs.com/zhoujianying/p/8124225.html
Copyright © 2011-2022 走看看