js一百零一夜之第十二夜-截取字符串和返回其长度(汉字和英文)

来源:互联网 发布:微软软件卸载工具 编辑:程序博客网 时间:2024/06/05 18:55

//返回字符串汉字长度 英文或特殊字符两个相当于一个汉字
/*
 *str:传入的字符串
 *len:字符串的最大长度
 *返回截取的字符串
 */
function getStrChineseLen(str,len){
 str = str + "";
 var w = 0;
 str = str.replace(/[ ]*$/g,"");
 if(getStrChineseLength(str)>len){
  for (var i=0; i<str.length; i++) {
    var c = str.charCodeAt(i);
    //单字节加1
    if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
      w++;
    }else {
      w+=2;
    }   
    if(parseInt((w+1)/2)>len){
    //return str.substring(0,i-1)+"..";
    str = str.substring(0,i-1);
    str = getStrChineseLength(str)==len?str.substring(0,i-2):str;
    return str+"..";
    break;
    }
  
  }
 }
 return str;
 
}

 

//-----------------------------------------返回汉字的长度


function getStrChineseLength(str){
 str = str+"";
 str = str.replace(/[ ]*$/g,"");
 var w = 0;
 for (var i=0; i<str.length; i++) {
     var c = str.charCodeAt(i);
     //单字节加1
     if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
       w++;
     }else {
       w+=2;
     }
    }  
 var length = w % 2 == 0 ? (w/2) : (parseInt(w/2)+1) ;
 return length;
 
}

1 0