写页面时,会有需求用户名称不要超过一行,或者描述文字不超过两行的要求,但是如果简单的使用
单纯使用username.slice(0,10)进行文字的控制的时候,发现效果不是很理想,因为中文和英文的字符长度不一样,导致获取的长度是不同的,所以使用字符长度来控制字数比较好,话不多上,上方法:
byteLength (val, len = 25) {
let b = len; // 规定长度
let init = 0;
let newVal = '';
// 获取字符串字节总长度
let totalLen = 0;
for(var l = 0;l<val.length;l++) {
if(val.charCodeAt(l) > 255) {
totalLen += 2;
}else {
totalLen ++;
}
}
for(var i = 0; i<val.length; i++) {
if(init <= b) {
newVal += val[i]
if(val.charCodeAt(i) > 255) {
init += 2
}else {
init ++;
}
}
}
return newVal + (totalLen>b ? '...' : '')
}
使用方法:
const val = this.byteLength("我是一个字符串", 8)