获取字符串字节长度及根据字节截取

背景:假设现在有两个字符串

let str="王者农药",str2 = "wzny";
console.log(str.length) // 4
console.log(str2.length) // 4

两个字符串的长度是一直的,但是str和str2在页面上占据的位置大小是不一致的;

1.获取字符串的字节长度

function strByte(str) {
    return str.replace(/[^\x00-\xff]/g,"01").length
}

2.根据自身所需要的字节长度数去截取字符串

function getByteStr(str,byteLen) { // 第一个参数字符串本身,第二个参数所需截取字节长度
    //将字符串转为数组
    const byteArr = str.split(''),reg = /[^\x00-\xff]/;
    // 设置计数
    let byteNum = 0,spliceIndex = 0;
    for(var let i = 0;i < byteArr.length; i++){
        reg.test(byteArr[i]) ? byteNum+= 2 : byteNum+= 1;
        if (byteNum > byteLen) {
            spliceIndex = i
            break;
        }
    }
    const substrStart = str.substr(0, spliceIndex)
    const substrEnd = str.substr(spliceIndex, str.length)
    return {substrStart: substrStart, substrEnd: substrEnd}
}

结尾:通过获取当前字符串的字节数量去截取字符串可以保证不同的字符串占位一致

posted @ 2021-04-25 15:03  dropInInt  阅读(556)  评论(0编辑  收藏  举报