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 相关文章推荐
基于jquery的checkbox下拉框插件代码
Jun 25 Javascript
jquery.messager.js插件导致页面抖动的解决方法
Jul 14 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
Nov 01 Javascript
xmlhttp缓存清除的2种解决方法
Dec 13 Javascript
jquery中radio checked问题
Mar 16 Javascript
JS实现的自定义右键菜单实例二则
Sep 01 Javascript
Ionic快速安装教程
Jun 03 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
Nov 17 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
Mar 09 Javascript
vue实现路由不变的情况下,刷新页面操作示例
Feb 02 Javascript
原生JavaScript写出Tabs标签页的实例代码
Jul 20 Javascript
javascript读取本地文件和目录方法详解
Aug 06 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
11个PHP 分页脚本推荐
2011/08/15 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
JavaScript实现旋转轮播图
2020/08/18 Javascript
解析vue data不可以使用箭头函数问题
2018/07/03 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
深入理解Python分布式爬虫原理
2017/11/23 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
Python中zip函数如何使用
2020/06/04 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
印度民族服装购物网站:BIBA
2019/08/05 全球购物
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
化工机械应届生求职信
2013/11/04 职场文书
小学家长会邀请函
2014/01/23 职场文书
校园十大歌手策划书
2014/02/01 职场文书
致200米运动员广播稿
2014/02/06 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
合作协议书范本
2014/04/17 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
重阳节简报
2015/07/20 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
幼儿园科学课教学反思
2016/03/03 职场文书
ES6 解构赋值的原理及运用
2021/05/25 Javascript
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript