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 相关文章推荐
Opacity.js
Jan 22 Javascript
提取字符串中年月日的函数代码
Nov 05 Javascript
8个实用的jQuery技巧
Mar 04 Javascript
javascript屏蔽右键代码
May 15 Javascript
jQuery实现美观的多级动画效果菜单代码
Sep 06 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
Jan 23 Javascript
node.js从数据库获取数据
May 08 Javascript
AngularJS基础 ng-href 指令用法
Aug 01 Javascript
js统计页面上每个标签的数量实例代码
May 29 Javascript
详解jQuery中的easyui
Sep 02 jQuery
详解vue挂载到dom上会发生什么
Jan 20 Javascript
JavaScript Dom 绑定事件操作实例详解
Oct 02 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
laravel安装zend opcache加速器教程
2015/03/02 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
node.js中的console用法总结
2014/12/15 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
微信小程序录音与播放录音功能
2017/12/25 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
Python Logging 日志记录入门学习
2018/06/02 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
Python基础知识点 初识Python.md
2019/05/14 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
英国钻石公司:British Diamond Company
2020/02/16 全球购物
深圳-东方伟业笔试部分
2015/02/11 面试题
优秀士兵先进事迹
2014/02/06 职场文书
应届生面试求职信
2014/07/02 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技