不要直接通过字符串截取。而是通过先转化成array,再通过array的方法取出来拼接。例如:截取nikename字符串的前4位,后面的拼接...
if(nikename.length>4){
let nikeArr = Array.from(nikename);
nikename = nikeArr.slice(0, 4).join('') + '...';
}
涉及到字符串中有特殊字符的,比如微信昵称等,有时候有需要截取前几位的需求,一般两种解决方案。方法一是直接截取字符串,方法二就是给控件设置物理长度,让其只能显示大概四个汉字的宽度。
方法一遇见特殊字符串,比如正好在中间带表情或小图片啥的,截取后基本就完蛋了,后面会显示空白(在微信浏览器中)。还有的会截取部分特殊字符的编码导致出现问号。
方法二更不合适,因为字体或字符的物理宽度根本不一致,会导致半截字体的出现等问题。
所以,比较完美的方法就是先转换成数组再截取拼接。