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的内存泄漏
Mar 04 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
Oct 24 Javascript
jquery动态加载js/css文件方法(自写小函数)
Oct 11 Javascript
JS+CSS实现简易实用的滑动门菜单效果
Sep 18 Javascript
jQuery代码实现对话框右上角菜单带关闭×
May 03 Javascript
Javascript之String对象详解
Jun 08 Javascript
Bootstrap学习笔记之js组件(4)
Jun 12 Javascript
AngularJs自定义服务之实现签名和加密
Aug 02 Javascript
JS弹性运动实现方法分析
Dec 15 Javascript
Bootstrap导航简单实现代码
Mar 06 Javascript
vue源码学习之Object.defineProperty对象属性监听
May 30 Javascript
小程序组件之仿微信通讯录的实现代码
Sep 12 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中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
angular十大常见问题
2017/03/07 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
2018/04/24 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
2019/03/04 Javascript
微信小程序API—获取定位的详解
2019/04/30 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
pandas分批读取大数据集教程
2020/06/06 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
迟到检讨书1000字
2014/01/15 职场文书
小学新学期教师寄语
2014/01/18 职场文书
面试后的感谢信范文
2014/02/01 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
暑期工社会实践报告
2015/07/13 职场文书
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python