//计算字符串的长度,将汉字替换成2个字符
function byteLen(s){
return (s||'').replace(/[^\x00-\xff]/g, "--").length;
}
function subByte(s, len, tail){
if (byteLen(s) <= len) {return s; }
tail = tail === undefined ? '...' : tail;
len -= byteLen(tail);
return s.substr(0, len).replace(/([^\x00-\xff])/g, "$1 ") //双字节字符替换成两个 $1是正则表达式匹配的第一个括号的内容 将 汉字 匹配成 汉字+“”
.substr(0, len) //截取长度
.replace(/[^\x00-\xff]$/, "") //去掉临界双字节字符,网上看的,不是很清楚为什么要去掉临界双字节字符
.replace(/([^\x00-\xff]) /g, "$1") + tail; //还原
}