• 按字节长度截取字符串


    默认的截取字符串都是根据字符长度或位置截取的,典型的两个方法是substr和substring。

    这样导致的问题是截取同样长度的字符串时,多字节字符(汉字等)和单字节字符(半角英文字母、半角数字)占的位置长度差距较大,视觉上不太美观,比如同样是10个字符:

    壹贰叁肆伍陆柒捌玖拾
    abcdefghih

    /*
    * param str 要截取的字符串
    * param L 要截取的字节长度,注意是字节不是字符,一个汉字两个字节
    * return 截取后的字符串
    */
    function cutStr(str,L){
    var result = '',
    strlen = str.length, // 字符串长度
    chrlen = str.replace(/[^x00-xff]/g,'**').length; // 字节长度

    if(chrlen<=L){return str;}

    for(var i=0,j=0;i<strlen;i++){
    var chr = str.charAt(i);
    if(/[x00-xff]/.test(chr)){
    j++; // ascii码为0-255,一个字符就是一个字节的长度
    }else{
    j+=2; // ascii码为0-255以外,一个字符就是两个字节的长度
    }
    if(j<=L){ // 当加上当前字符以后,如果总字节长度小于等于L,则将当前字符真实的+在result后
    result += chr;
    }else{ // 反之则说明result已经是不拆分字符的情况下最接近L的值了,直接返回
    return result;
    }
    }
    }

    // 用例
    alert(cutStr("测试1字符串哈哈哈哈",10));
    alert(cutStr("abcdefghigklmn",10));

  • 相关阅读:
    API 生命周期管理
    devops注意事项
    持续交付
    如何进行自动化测试
    环境分类
    多环境配置管理
    一包到底
    111 Lucky
    python反射机制 Lucky
    单元测试框架(unittest) Lucky
  • 原文地址:https://www.cnblogs.com/gopark/p/8857942.html
Copyright © 2020-2023  润新知