JS 实现占位符截取字符串内容

//charnum占位长度,
//返回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));


