//charnum占位长度,
//str 字符串内容
//返回charnum占位长度 下的字符串长度;
function getcharlength(charnum,str){
var len = 0;
for (var i = 0; i < str.length; i++) {
var c = str.charCodeAt(i);
//单字节加1
if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
len++;
} else {
len += 2;
}
//需要占位长度大于或等于字符串长度,返回字符串长度
if(i==str.length-1&&len<charnum){
return str.length;
}
//返回占位符下的字符串长度
if(len>=charnum){
return i;
}
}
}
var str = '中国人民解放军kangkai激昂的CHANG着国歌,"@#$%%%"';
//截取前20位占位符下字符串内容。
var subs = str.substr(0,getcharlength(20,str));