Open mishe opened 8 years ago
出于移动端的手机界面的限制,每屏显示的内容有限,需要截断内容的展示,以便可以显示更多的列表内容,另外后端API出于各端的数据统一,只负责数据的完整性,那么这个任务就需要前端来做;
charLen: function (string) { if (!string) return 0; return string.replace(/[^\x00-\xff]/g, '00').length; },
由源码可以看出,通过识别非ascii码的字符都算2个字符长度;
getLimitString: function (str, limit) { var pos = 0; if (!limit || $.charLen(str) <= limit) return str; for (var i = 0; i < str.length; i++) { pos += str.charCodeAt(i) > 255 ? 2 : 1; if (limit <= pos) { return str.substr(0, i + 1)+'...'; break; } } }
前端截取字符串
出于移动端的手机界面的限制,每屏显示的内容有限,需要截断内容的展示,以便可以显示更多的列表内容,另外后端API出于各端的数据统一,只负责数据的完整性,那么这个任务就需要前端来做;
截取字符的思路和获取字符串长度的思路一致,先来看下识别字符串长度的函数:
由源码可以看出,通过识别非ascii码的字符都算2个字符长度;
那么截止字符串的长度时,我们也可以通过这个来做处理,来看源码:
首先,判断字符串是否为空,或者长度比截取的长度还小,这返回原字符串
然后通过循环来计算截取的位置
最后通过substr来截取字符串并增加'...'。