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 相关文章推荐
5 cool javascript apps
Mar 24 Javascript
JavaScript Event学习第二章 Event浏览器兼容性
Feb 07 Javascript
IE6图片加载的一个BUG解决方法
Jul 13 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
Jul 31 Javascript
JavaScript字符串插入、删除、替换函数使用示例
Jul 25 Javascript
浅析JavaScript中的类型和对象
Nov 29 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
Jun 30 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
Aug 07 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
Jan 02 jQuery
vue.js在标签属性中插入变量参数的方法
Mar 06 Javascript
js循环map 获取所有的key和value的实现代码(json)
May 09 Javascript
基于vue循环列表时点击跳转页面的方法
Aug 31 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 APC缓存配置、使用详解
2014/03/06 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
Python实现12306火车票抢票系统
2019/07/04 Python
python子线程退出及线程退出控制的代码
2019/10/16 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
会计电算化个人求职信范文
2014/01/24 职场文书
会计主管岗位职责
2015/04/02 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
Nginx动静分离配置实现与说明
2022/04/07 Servers