后端返回一个字符串,产品希望前端展示18个字节长度的字符串,超出部分用省略号替代。刚刚开始没有想到特别好的判断,后面对比了下网上的资料,最后封装了一个简陋的方法。
handleSizeLength = (source, byteLength) => {
if (typeof source !== 'string') return;
let limt = 0;
let str = '';
if (source.length * 2 <= byteLength) {
return source
}
for (let i = 0; i < source.length; i++) {
if (source.charCodeAt(i) > 255) {
limt += 2;
if (limt <= byteLength) {
str += source[i];
}
} else {
limt++;
if (limt <= byteLength) {
str += source[i]
}
}
}
if (limt <= byteLength) {
return str
}
return `${str}...`
}
这样就可以做到简单的替换了。