JavaScript計算字串位元組長度

admin發表於2018-08-08

本章節分享一段程式碼例項,它實現了計算字串佔用位元組長度的功能。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
// 得到位元組長度 
String.prototype.GetLen = function() { 
  var regEx = /^[\u4e00-\u9fa5\uf900-\ufa2d]+$/; 
  if (regEx.test(this)) { 
   return this.length * 2; 
  } else { 
   var oMatches = this.match(/[\x00-\xff]/g); 
   var oLength = this.length * 2 - oMatches.length; 
   return oLength; 
  } 
}; 
var str="螞蟻部落的url地址是softwhy.com";
console.log(str.GetLen());

上面的程式碼實現了我們的要求,下面對程式碼做一下簡單介紹。

單位元組的資料是0-255ASCII碼對應的資料,[\u4e00-\u9fa5\uf900-\ufa2d]所匹配的資料局勢雙位元組的(這裡我們們就不糾結到底這些都是寫什麼資料了,網上通用的基本沒錯)。如果一個字串全都是[\u4e00-\u9fa5\uf900-\ufa2d]匹配的資料,那麼就都是雙位元組的,那麼位元組數就是字串的長度乘以2。如果不全是雙位元組的,那麼首先字串長度乘以2,然後再找出單位元組數字符的數目,減去這個數目,就是字串最終的位元組長度。

相關文章