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

來源:互聯網
上載者:User

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

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

網上大致有兩種方法處理中英文字元。一種是把中文字元escape了,然後計算位元組長度。一種是用Regex把中文字元轉換2個位元組的符號,然後計算長度

 

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

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

一.String.len() 方法,計算字串位元組個數:

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

 

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

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

 

 

使用方法:最好寫成通用指令碼,放到所有指令碼前面,調用如下:

 

1 var a='tom正在測試中英文字元處理';
2 alert(a.len());
3 alert(a.sub(5));
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.