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 相关文章推荐
img的onload的另类用法
Jan 10 Javascript
将string解析为json的几种方式小结
Nov 11 Javascript
禁用页面部分JavaScript方法的具体实现
Jul 31 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
Aug 06 Javascript
js控制TR的显示隐藏
Mar 04 Javascript
jQuery自制提示框tooltip改进版
Aug 01 Javascript
Nginx 配置多站点vhost 的方法
Jan 07 Javascript
基于JS实现html中placeholder属性提示文字效果示例
Apr 19 Javascript
详解node字体压缩插件font-spider的用法
Sep 28 Javascript
浅谈vuex actions和mutation的异曲同工
Dec 13 Javascript
微信小程序云函数添加数据到数据库的方法
Mar 04 Javascript
vue通过接口直接下载java生成好的Excel表格案例
Oct 26 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屏蔽过滤指定关键字的方法
2014/11/03 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
2019/12/13 PHP
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
Python3.2模拟实现webqq登录
2016/02/15 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
学习python需要有编程基础吗
2020/06/02 Python
发现两个有趣的CSS3动画效果
2013/08/14 HTML / CSS
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
努比亚手机官网:nubia
2016/10/06 全球购物
师生聚会感言
2014/01/26 职场文书
大学生简短的自我评价分享
2014/02/20 职场文书
企业文化标语口号
2014/06/09 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
法律意见书范文
2015/05/20 职场文书
Python常遇到的错误和异常
2021/11/02 Python
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript
Spring Security动态权限的实现方法详解
2022/06/16 Java/Android