处理过长的字符串,截取并添加省略号
 * 注:半角长度为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字..."

JS按字节截取字符长度实例的更多相关文章

  1. JS按字节截取字符长度实例2

    /* * param str 要截取的字符串 * param L 要截取的字节长度,注意是字节不是字符,一个汉字两个字节 * return 截取后的字符串 */ function cutStr(str ...

  2. CSS截取截取字符长度并显示省略号的方法

    HTML部分 <div> <span>这是一个CSS3截取截取字符的例子.它根据宽度来处理.</span> </div> <div class=& ...

  3. ABAP字符串操作 截取字符长度 取位数

    ABAP字符串操作   ABAP對字串的操作方法與其他語言的操作有較大差別,以下是較常用的對字串操作的方法: 1. 字串的連接:CONCATENATEDATA: t1 TYPE c LENGTH 10 ...

  4. JS 根据字节 截取字符串函数

    function reBytesStr(str, len) { if ((!str && typeof(str) != 'undefined')) {return '';} var n ...

  5. javascript 高效按字节截取字符串

    做为一个前端开发人员在网页展示中经常会碰到,标题过长,需要截取字符串,用CSS的实现的话各种兼容问题,各种坑. 让后台程序截一下,又各种推托,让后台按字节截一下更是和要了后台老命一样,最后可能只会安字 ...

  6. javascript按字节截取标题中字符串

    在网页展示中经常会碰到,标题过长,需要截取字符串,用CSS的实现的话各种兼容问题,下面为大家介绍下javascript如何按字节截取字符串 做为一个前端开发人员在网页展示中经常会碰到,标题过长,需要截 ...

  7. js实现超过长度的字符截取指定长度(中文字符算2个字符),超出部分以...显示

    //超过长度的字符截取指定长度,超出部分以...显示 function subString(str, len) { var newLength = 0; var newStr = "&quo ...

  8. JS计算字符长度、字节数 -- 转

    一个汉字在UTF-8编码中占用几个字节? 占用3个字节的范围 U+2E80 - U+2EF3 : 0xE2 0xBA 0x80 - 0xE2 0xBB 0xB3 共 115 个 U+2F00 - U+ ...

  9. JS截取字符串方法实例

    // JS截取字符串可使用 substring()或者slice() // // 函数:substring() // 定义:substring(start,end)表示从start到end之间的字符串 ...

随机推荐

  1. 一张图搞清楚PMBOK所有过程的使用

      很多参加PMP培训的学员大概都会有一个感受,上课时似乎每个知识点都听懂了,大的知识框架也弄明白了,但是所有这些串起来在实践中怎么用呀!说的再直接一点,在考试的时候这些过程和活动是以怎样的逻辑来应用 ...

  2. 文件重定向,getline()获取一样,屏幕输出流,格式控制符dec,oct,hex,精度控制setprecision(int num),设置填充,cout.width和file(字符),进制输入

     1.在window下的命令重定向输出到文件里 2.将内容输入到某个文件里的方式:命令<1.txt (使用1.txt中的命令) 3.读取文件里的名,然后将命令读取最后输出到文件里.命令< ...

  3. iOS之中国银联移动支付控件升级的问题

    自从11月以来,如果用户安装了集成了中国银联手机支付SDK的app,那么在使用银联支付的时候,会发现,不能调用银联支付方式,并且弹出一个提示”银联手机支付已升级请更新客户端8100010”.如下图: ...

  4. Ubuntu下编译Android JNI实例全过程

    第一步:保证make和gcc可用 在shell中输入make-v.不报错就是对的.(可參考http://wenku.baidu.com/view/d87586c24028915f804dc24a.ht ...

  5. 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结

    为什么说JAVA中要慎重使用继承   这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...

  6. POJ 3414:Pots

    Pots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11661   Accepted: 4940   Special J ...

  7. Posix消息队列相关函数

    Posix消息队列(message queue) IPC函数中常用的参数取值: 打开或创建POSIX IPC对象所用的各种oflag常值o_RDONLY   只读O_WRONLY   只写O_RDWD ...

  8. 设计模式学习笔记——Decorator装饰模式

    装饰模式的作用或动机就是,尽量避免继承,而使用关联.原因是层层继承下来,内容会越来越多,有失控的危险.就扩展性而言,用关联比用继承好.所谓的关联,A使用了B,就叫A关联了B. Component 抽象 ...

  9. SSM整理笔记1——SSM网站初步功能设计

    前言 因为公司里一直用Hibernate,但是现在Mybatis是趋势,所以搭建一个Mybatis的网站框架,目的是:1摸清其功能特点,2为以后的项目增加框架选择(以前只用hibernate或者Spr ...

  10. Jetty的JNDI数据源

    一. 此处绑定的数据源是以 DBCP 为实现.首先必须将数据库驱动(这里用了MYSQL数据库)和DBCP所需要的 Jar 包复制到 Jetty 根目录的 lib 目录下.DBCP主要需要以下3个文件: ...