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 对象比较实现代码
Apr 27 Javascript
jquery异步循环获取功能实现代码
Sep 19 Javascript
Prototype源码浅析 Number部分
Jan 16 Javascript
javascript SpiderMonkey中的函数序列化如何进行
Dec 05 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
Dec 16 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
Dec 01 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
Jun 10 Javascript
Bootstrap零基础入门教程(三)
Jul 18 Javascript
微信小程序网络请求wx.request详解及实例
May 18 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
Aug 18 Javascript
浅谈JavaScript作用域和闭包
Sep 18 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
Mar 08 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
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
php初始化对象和析构函数的简单实例
2014/03/11 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
浅谈PHP进程管理
2019/03/08 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
台湾深度自由行旅游平台:Tripbaa趣吧
2017/10/10 全球购物
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
经济信息管理专业大学生求职信
2013/09/27 职场文书
优秀通讯员事迹材料
2014/01/28 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
参赛口号
2014/06/16 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
好的旅游活动方案
2014/08/19 职场文书
校运动会广播稿300字
2014/10/07 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS