截取中英文字符串,一個漢字相當於2個字符,多余部分用...補全,比如要保留3個字:
'你好'=>'你好'
'你好啊啊'=>'你好啊...'
'你好aaa'=>'你好aa...'
'你hao啊'=>'你hao...' 等等
代碼如下:
cutStr = (str, len) => {
let charLength = 0;
for (let i = 0; i < str.length; i++) {
charLength += encodeURI(str.charAt(i)).length > 2 ? 1 : 0.5;
if (charLength >= len) {
const subLen = charLength === len ? i + 1 : i;
return `${str.substr(0, subLen)}...`;
}
}
return str;
}
升級版(常用):
比如元素寬度可以放下4個中文字符,那么當str長度為4時,則不省略,代碼如下:
getLength = (str) => {
let charLength = 0;
for (let i = 0; i < str.length; i++){
charLength += encodeURI(str.charAt(i)).length > 2 ? 1 : 0.5;
}
return charLength;
}
cutStr = (str, len) => {
if(getLength(str)>len+1) {
let charLength = 0;
for (let i = 0; i < str.length; i++) {
charLength += encodeURI(str.charAt(i)).length > 2 ? 1 : 0.5;
if (charLength >= len) {
const subLen = charLength === len ? i + 1 : i;
return `${str.substr(0, subLen)}...`;
}
}
}
return str;
}