javascript 中英文字符長度和截斷處理


因:javascript中的String類自帶的length屬性 和 substr()方法雖然能判斷和截取出字符個數,但是對字節個數卻沒有處理的方法(眾所周知,中文字符占兩個字節,英文只占一個)

果:中英文字符在頁面上的占位空間存在差異。中文的web開發人員不能一刀切,對中英文都截取同樣長度的字符數。

網上大致有兩種方法處理中英文字符。一種是把中文字符escape了,然后計算字節長度。一種是用正則表達式把中文字符轉換2個字節的符號,然后計算長度

推薦第二種方法,簡單明了,速度快,效率高。

按照第二種方法,對javascript 的 String類型做以下擴展:

一.String.len() 方法,計算字符串字節個數:

String.prototype.len=function()          {                 
 return this.replace(/[^\x00-\xff]/g,"rr").length;          
}

二.String.sub(endindex) 方法,從0開始截取endindex長度的字節數。

String.prototype.sub = function(n)
{    
 var r = /[^\x00-\xff]/g;    
 if(this.replace(r, "mm").length <= n) return this;   
 // n = n - 3;    
 var m = Math.floor(n/2);    
 for(var i=m; i<this.length; i++) {    
 if(this.substr(0, i).replace(r, "mm").length>=n) {    
  return this.substr(0, i) ; }    
 } return this;   
};

 三.根據unicode編碼范圍

String.prototype.gblen = function() {    
    var len = 0;    
    for (var i=0; i<this.length; i++) {    
        if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {    
             len += 2;    
         } else {    
             len ++;    
         }    
     }    
    return len;    
}  

參考:http://blog.csdn.net/testcs_dn/article/details/21412303

 charCodeAt()

定義和用法

charCodeAt() 方法可返回指定位置的字符的 Unicode 編碼。這個返回值是 0 - 65535 之間的整數。

方法 charCodeAt() 與 charAt() 方法執行的操作相似,只不過前者返回的是位於指定位置的字符的編碼,而后者返回的是字符子串。

 

字符編碼:http://www.cnblogs.com/darr/p/5355178.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM