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


Posted in Javascript onNovember 20, 2013

*
 * 处理过长的字符串,截取并添加省略号
 * 注:半角长度为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字..."
Javascript 相关文章推荐
Exjs 入门篇
Apr 07 Javascript
js获取下拉列表框中的value和text的值示例代码
Jan 11 Javascript
jQuery中html()方法用法实例
Dec 25 Javascript
js实现人民币大写金额形式转换
Apr 27 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
Jul 28 Javascript
JavaScript 中的 this 简单规则
Sep 19 Javascript
Router解决跨模块下的页面跳转示例
Jan 11 Javascript
优化Vue项目编译文件大小的方法步骤
May 27 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
Sep 19 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
Aug 19 Javascript
Node在Controller层进行数据校验的过程详解
Aug 28 Javascript
JavaScript实现酷炫的鼠标拖尾特效
Feb 18 Javascript
详解JS 比较两个Json对象的值是否相等的实例
Nov 20 #Javascript
javascipt匹配单行和多行注释的正则表达式
Nov 20 #Javascript
自定义的一个简单时尚js下拉选择框
Nov 20 #Javascript
jQuery对html元素取值与赋值的方法
Nov 20 #Javascript
客户端js判断文件类型和文件大小即限制上传大小
Nov 20 #Javascript
JS保留两位小数 四舍五入函数的小例子
Nov 20 #Javascript
使用js简单实现了tree树菜单
Nov 20 #Javascript
You might like
用PHP实现WEB动态网页静态
2006/10/09 PHP
PHP与SQL注入攻击[一]
2007/04/17 PHP
2014最热门的24个php类库汇总
2014/12/18 PHP
PHP session 会话处理函数
2016/06/06 PHP
php实现的顺序线性表示例
2019/05/04 PHP
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
Js冒泡事件详解及阻止示例
2014/03/21 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
Python random模块常用方法
2014/11/03 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
Python对接六大主流数据库(只需三步)
2019/07/31 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
python如何实现word批量转HTML
2020/09/30 Python
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
Vilebrequin美国官方网上商店:法国豪华泳装品牌
2020/02/22 全球购物
网络工程师的自我评价
2013/10/02 职场文书
教师一岗双责责任书
2014/04/16 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
交通违章检讨书
2014/09/21 职场文书
班主任2015新年寄语
2014/12/08 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
如何写好活动总结
2019/06/21 职场文书