标签:class 需要 dex 计数 fun sub 一个 参数 break
背景:假设现在有两个字符串
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} }
结尾:通过获取当前字符串的字节数量去截取字符串可以保证不同的字符串占位一致
标签:class 需要 dex 计数 fun sub 一个 参数 break
原文地址:https://www.cnblogs.com/dropInInt/p/14700328.html