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 相关文章推荐
用 Javascript 验证表单(form)中的单选(radio)值
Sep 08 Javascript
JSON 和 JavaScript eval使用说明
Jun 13 Javascript
JavaScript之自定义类型
May 04 Javascript
js写的评论分页(还不错)
Dec 23 Javascript
jQuery过滤选择器详解
Jan 13 Javascript
jquery让指定的元素闪烁显示的方法
Mar 17 Javascript
JavaScript DOM操作表格及样式
Apr 13 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
Apr 21 Javascript
JavaScript省市区三级联动菜单效果
Sep 21 Javascript
jQuery tip提示插件(实例分享)
Apr 28 jQuery
js将键值对字符串转为json字符串的方法
Mar 30 Javascript
VueCli4项目配置反向代理proxy的方法步骤
May 17 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
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
ThinkPHP空模块和空操作详解
2014/06/30 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
JavaScript Event学习第十章 一些可替换的事件对
2010/02/10 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
2013/11/07 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
简单介绍Python中的struct模块
2015/04/28 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
微信小程序python用户认证的实现
2019/07/29 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
幼儿师范毕业生自荐信
2013/11/09 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
项目转让协议书
2014/10/27 职场文书
母亲节感言
2015/08/03 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
人民币使用说明书
2019/04/17 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
MySQL中日期型单行函数代码详解
2021/06/21 MySQL
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python