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 ThickBox插件使用心得(不建议使用)
Sep 08 Javascript
javascript实现图像循环明暗变化的方法
Feb 25 Javascript
招聘网站基于jQuery实现自动刷新简历
May 10 Javascript
基于jQuery实现响应式圆形图片轮播特效
Nov 25 Javascript
JavaScript判断用户名和密码不能为空的实现代码
May 16 Javascript
浅谈Cookie的生命周期问题
Aug 02 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
Nov 27 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
Jul 25 Javascript
微信小程序框架的页面布局代码
Aug 17 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
Oct 23 Javascript
在JavaScript中实现链式调用的实现
Dec 24 Javascript
JavaScript如何使用插值实现图像渐变
Jun 28 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懒人函数 自动添加数据
2011/06/28 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
PHP中的常见魔术方法功能作用及用法实例
2015/07/01 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
python 弧度与角度互转实例
2020/04/15 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
Python实现定时监测网站运行状态的示例代码
2020/09/30 Python
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
经贸日语专业个人求职信范文
2013/12/28 职场文书
文明礼仪小标兵事迹
2014/01/12 职场文书
企业金融服务方案
2014/06/03 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python
React更新渲染原理深入分析
2022/12/24 Javascript