天天看點

限制漢字的長度(包括處理英文字母)

  一個漢字的長度等于兩個英文字母的長度。

  是以在限制字元串長度的時候,需要将兩者的類型轉換成一緻,處理方法如下:

/**
字元串截取

參數
  str <string> 字元串
  len <integer> 長度。
  sufix <string> 字尾

傳回
  <string>
*/
function subString(str, len, sufix) {
  var r = /[^\x00-\xff]/g;  //比對雙位元組字元(包括漢字在内),一個雙位元組字元長度計2
  var m;

  if (str.replace(r, '**').length > len) {
    m = Math.floor(len / 2);
  //做法:将字元串的每個字元轉化成雙位元組,然後判斷該字元串的長度(簡化操作:将字元串取一半,減少循環的次數)
    for (var i = m, l = str.length; i < l; i++) {
      if (str.substr(0, i).replace(r, '**').length >= len) {//截取從0到i的字元串,然後替換成雙位元組的字元
        return str.substr(0, i) + sufix;
      }
    }
  }

  return str;
};      

 附屬:正則常用的用法  

http://469957559.iteye.com/blog/1999623

繼續閱讀