您的位置:首页 > Web前端 > JavaScript

js中按字节截取字符串

2014-05-09 11:06 288 查看
功能:在网页中显示过长的字符串,截取指定长度,结尾添加省略号。 

例如: 
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字..." 

代码如下,其中全角半角判断部分isFull()的逻辑偷懒了,有特殊符号需求的可以自己定制。 

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: true:全角 

 *          false:半角 

 */  

function isFull (pChar) {  

    if ((pChar.charCodeAt(0) > 128)) {  

        return true;  

    } else {  

        return false;  

    }  

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js 字节 字符串截取