JS 获取字符串字节长度

JS 获取字符串字节长度,网上代码特别多,时间跨度也不短,这里介绍一种网上不多见的,或许是首发 ❓

在这里先看看网上搜索的代码吧

正则判断 然后替换
function onCheckStrByte(str) {
    return byteLen = str.replace(/[^x00-xFF]/g, '**').length;
}

console.log(onCheckStrByte('123456多少字节??❓'))
// 输出结果: 19
与上面类似正则替换
function getStrByte(str) {
    return str.replace(/[\u0000-\u007f]/g, "a").replace(/[\u0080-\u07ff]/g, "aa").replace(/[\u0800-\uffff]/g, "aaa").length;
}

console.log(getStrByte('123456多少字节??❓'))
// 输出结果: 25
let getStrBytes = function(str) {
    if (str == null || str === undefined) return 0;
    if (typeof str != "string") {
        return 0;
    }
    var total = 0,
        charCode, i, len;
    for (i = 0, len = str.length; i < len; i++) {
        charCode = str.charCodeAt(i);
        if (charCode <= 0x007f) {
            total += 1; //字符代码在000000 – 00007F之间的,用一个字节编码
        } else if (charCode <= 0x07ff) {
            total += 2; //000080 – 0007FF之间的字符用两个字节
        } else if (charCode <= 0xffff) {
            total += 3; //000800 – 00D7FF 和 00E000 – 00FFFF之间的用三个字节,注: Unicode在范围 D800-DFFF 中不存在任何字符
        } else {
            total += 4; //010000 – 10FFFF之间的用4个字节
        }
    }
    return total;
};


console.log(getStrBytes("123456多少字节??❓"))
// 输出结果: 25
我的写法
function lengthx(str){
    return (new TextEncoder).encode(str).length;
}

console.log(lengthx("123456多少字节??❓"))
// 输出结果: 25

Post Author: admin