js 关于中文字符串的一些处理

来源:互联网 发布:国家的顶级域名 编辑:程序博客网 时间:2024/05/16 07:34

 // 获取字符串的字节长度

 function getStrLength(str){  
  if(!str){
   return0;
  }
  var cArr =str.match(/[^\x00-\xff]/ig);  
  return str.length + (cArr ==null ? 0 : cArr.length);  
 }


 // 检查是否含有中文
 function isChinese(str){  
  if(!str){
   returnfalse;
  }
  var cArr =str.match(/[^\x00-\xff]/ig);
  if(!cArr || cArr.length <=0){
   returnfalse;
  }
  return true;
 }


  //最多获取maxByte个字节(如果最后一个中文跨度,则获取maxByte+1个字节)的字符串内容
 function getStrByMaxByte(str,maxByte){  
  if(!str || str.length == 0 ||isNaN(parseInt(maxByte))){
   returnstr;
  }
  var cArr =str.match(/[^\x00-\xff]/ig);
  if(!cArr || cArr.length <=0){//没有中文
   returnstr.slice(0,maxByte);
  }
  var totalLength = str.length +cArr.length;
  if(totalLength <=maxByte){//总字节数小于要求的最大限制
   returnstr;
  }
  var lengthTemp = 1;
  var maxByteTemp = 0;
  var strTemp = "";
  var cArr = null;
  if((maxByte % 2) == 0){
   lengthTemp =maxByte/2;
  }else{
   lengthTemp =(maxByte+1)/2;
  }
  while(maxByteTemp <maxByte){
   strTemp =str.slice(0,lengthTemp);
   cArr =strTemp.match(/[^\x00-\xff]/ig);
   maxByteTemp =strTemp.length + (cArr == null ? 0 : cArr.length);
   lengthTemp++;
  }
  return strTemp;
 }

0 0