来访~101757 文章~106 评论~25
2024年2月5日 作者 张临志

js中英文混合长度的计算以及截取

  1. 计算中文以及英文混合字符串的长度

    function getByteLen(val) {

    var len = 0;

    for (var i = 0; i < val.length; i++) {

    var a = val.charAt(i);

    if (a.match(/[^\x00-\xff]/ig) != null){

    len += 2;

    }else{

    len += 1;

    }

    }

    return len;

    }

  2. 截取中英文混合的字符串

    function subString(str, len) {
        var newLength = 0;
        var newStr = "";
        var chineseRegex = /[^\x00-\xff]/g;
        var singleChar = "";
        var strLength = str.replace(chineseRegex,"**").length;
        for(var i = 0;i < strLength;i++) {
            singleChar = str.charAt(i).toString();
            if(singleChar.match(chineseRegex) != null) {
                newLength += 2;
            }else {
                newLength++;
            }
            if(newLength > len) {
                break;
            }
            newStr += singleChar;
        }
        if(strLength > len) {
            newStr += "...";
        }
        return newStr;
    }