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点击出现悬浮窗效果不使用JQuery插件
Jan 20 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
Mar 19 Javascript
js实现仿京东2级菜单效果(带延时功能)
Aug 27 Javascript
超实用的javascript时间处理总结
Aug 16 Javascript
Vue中props的详解
May 16 Javascript
js中值引用和地址引用实例分析
Jun 21 Javascript
webpack3升级到webpack4遇到问题总结
Sep 30 Javascript
js消除图片小游戏代码
Dec 11 Javascript
Vue+tracking.js 实现前端人脸检测功能
Apr 16 Javascript
详解Vue Cli浏览器兼容性实践
Jun 08 Javascript
如何在selenium中使用js实现定位
Aug 18 Javascript
详解 javascript对象创建模式
Oct 30 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 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
Yii调试查看执行SQL语句的方法
2016/07/15 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
js DOM模型操作
2009/12/28 Javascript
JS格式化数字金额用逗号隔开保留两位小数
2013/10/18 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
Python对接六大主流数据库(只需三步)
2019/07/31 Python
Python列表如何更新值
2020/05/27 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
详解Python中的Lock和Rlock
2021/01/26 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
社区敬老月活动实施方案
2014/02/17 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
群众路线个人整改方案
2014/10/25 职场文书
裁员通知
2015/04/25 职场文书
总结会主持词
2015/07/02 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书
python实现简易名片管理系统
2021/04/11 Python
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android