js 關於中文字符串的一些處理

 // 獲取字符串的字節長度

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


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


  // 最多獲取maxByte個字節(如果最後一箇中文跨度,則獲取maxByte+1個字節)的字符串內容
 function getStrByMaxByte(str,maxByte) {  
  if(!str || str.length == 0 || isNaN(parseInt(maxByte))){
   return str;
  }
  var cArr = str.match(/[^\x00-\xff]/ig);
  if(!cArr || cArr.length <= 0){//沒有中文
   return str.slice(0,maxByte);
  }
  var totalLength = str.length + cArr.length;
  if(totalLength <= maxByte){//總字節數小於要求的最大限制
   return str;
  }
  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;
 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章