用户昵称截取方法:
sliceNickname = function(nickname, maxLength) {
try {
let retObj = {};
var retNickname = '';
var byteValLen = 0;
// var Regx = /^[A-Za-z0-9]*$/;
// 小写字母,大写字母,数字,英文下的特殊符号
var Regx = /^[a-z_A-Z0-9-\.!@#\$%\\\^&\*\)\(\+=\{\}\[\]\/",'<>~\·`\?:;|]+$/;
for (var i = 0; i < nickname.length; i++) {
if(Regx.test(nickname[i])){
byteValLen += 1;
}else{
byteValLen += 2;
}
if (byteValLen > maxLength){
break;
}
retNickname += nickname[i];
}
retObj.nickname = retNickname;
retObj.isSlice = byteValLen>maxLength;
if(retObj.isSlice){
return retObj.nickname + "...";
}else{
return retObj.nickname;
}
}catch (e) {
return nickname;
}
}
调用: sliceNickname(“千纸鹤
”,8); 在长度刚好要截取表情时,label就会不显示任何字符,也没异常
