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 相关文章推荐
js跨域问题之跨域iframe自适应大小实现代码
Jul 17 Javascript
jQuery 幻灯片插件(带缩略图功能)
Jan 24 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
Jun 21 Javascript
jQuery+Pdo编写login登陆界面
Aug 01 Javascript
AngularJS基础 ng-options 指令详解
Aug 02 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
Dec 02 Javascript
JavaScript严格模式详解
Jan 16 Javascript
jquery仿京东侧边栏导航效果
Mar 02 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
Dec 26 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
Apr 16 Javascript
详解JavaScript 的执行机制
Sep 18 Javascript
Vant 在vue-cli 4.x中按需加载操作
Nov 05 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和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
thinkPHP中多维数组的遍历方法
2016/01/09 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
event对象获取方法总结在google浏览器下测试
2013/11/03 Javascript
JavaScript判断浏览器类型的方法
2015/02/10 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
微信小程序 出现错误:{&quot;baseresponse&quot;:{&quot;errcode&quot;:-80002,&quot;errmsg&quot;:&quot;&quot;}}解决办法
2017/02/23 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
python局域网ip扫描示例分享
2014/04/03 Python
Python中非常实用的一些功能和函数分享
2015/02/14 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
python属于解释语言吗
2020/06/11 Python
Python Django搭建网站流程图解
2020/06/13 Python
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
美国踏板车和轻便摩托车销售网站:Mega Motor Madness
2020/02/26 全球购物
小班开学寄语
2014/04/04 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
社会学专业求职信
2014/07/17 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
工伤事故赔偿协议书
2014/10/27 职场文书
python flappy bird小游戏分步实现流程
2022/02/15 Python
MongoDB使用场景总结
2022/02/24 MongoDB