js區分gbk和utf-8的計算字串長度程式碼例項
如果要獲取一個字串中字元的長度,可能會是使用如下類似程式碼:
[JavaScript] 純文字檢視 複製程式碼var str="螞蟻部落softwhy.com"; console.log(str.length);
上面的程式碼輸出值是15,也就是說length屬性並不會區分是漢子還是英文字元,一個字元就是一個長度。
但是有時候我們需要區分中英文和編碼格式,比如為了匹配資料庫的長度範圍,例如,GBK的資料庫某欄位是varchar(10),就相當於5個漢字長度,下面就分別介紹一下gbk和utf-8的編碼下獲取字串長度程式碼例項。
一.gbk下獲取字串的長度:
在gbk下,一個漢字佔2個長度,一個英文字元依然是佔一個長度,程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼var str="螞蟻部落softwhy.com"; function getStrLeng(str){ var realLength=0; var len=str.length; var charCode=-1; for(var i=0;i<len;i++){ charCode=str.charCodeAt(i); if(charCode>=0&&charCode<=128){ realLength += 1; } else{ // 如果是中文則長度加2 realLength += 2; } } return realLength; } console.log(getStrLeng(str));
上面的程式碼實現了我們要求的功能,下面介紹一下它的實現過程。
程式碼註釋:
1.var str="螞蟻部落softwhy.com",要計算長度的字串。
2.function getStrLeng(str){},此函式實現了GBK編碼計算字串長度的功能。
3.var realLength=0,宣告一個變數並賦初值為0,用來存放字串最終的長度。
4.var len=str.length,獲取字串中字元的個數。
5.var charCode=-1,宣告一個變數並賦初值為-1,這個賦值其實是有點隨意的,用來儲存每一個字元的Unicode編碼值。
6.for(var i=0;i<len;i++),遍歷字串中的每一個字元。
7.charCode=str.charCodeAt(i),獲取字元的Unicode編碼值。
8.if(charCode>=0&&charCode<=128){
realLength += 1;
}判斷Unicode碼值的是否在0-128之間,在這之間的都是abc或者數字之類的拉丁字元,並非漢字,所以長度只加1。
9.else{
realLength += 2;
}否則的話長度應該加2.
10.return realLength,返回長度。
二.utf-8下獲取字串的長度:
如果按照utf-8編碼方式獲取字串長度,一個漢字佔三個長度,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼var str="螞蟻部落softwhy.com"; function getStrLeng(str){ var realLength=0; var len=str.length; var charCode=-1; for(var i=0;i<len;i++){ charCode=str.charCodeAt(i); if(charCode>=0&&charCode<=128){ realLength += 1; } else{ // 如果是中文則長度加2 realLength += 3; } } return realLength; } console.log(getStrLeng(str));
同樣的道理,只是這裡是如果遇到漢字加3而已,其餘的和第一段程式碼一模一樣。
相關閱讀:
1.length屬性可以參閱javascript String length一章節。
2.charCodeAt()可以參閱javascript charCodeAt()一章節。
相關文章
- javascript計算字串長度程式碼例項JavaScript字串
- js計算字串長度程式碼例項能夠區分中英文字元JS字串字元
- 擷取指定長度字串長度程式碼例項字串
- JavaScript計算字串的長度區分中英文JavaScript字串
- js擷取指定字串長度程式碼區分中英文JS字串
- js獲取字串長度區分漢字和英文JS字串
- js檢測漢字的長度程式碼例項JS
- js驗證字串長度 是否區分中文JS字串
- js擷取字串程式碼例項JS字串
- javascript擷取指定長度字串後面加點程式碼例項JavaScript字串
- nodeJS程式碼實現計算交社保程式碼例項NodeJS
- js計算指定數字的階乘程式碼例項JS
- js實現的擷取指定長度字串程式碼JS字串
- javascript 計算器程式碼例項JavaScript
- js實現的冪運算程式碼例項JS
- js計算斐波那契數列程式碼例項JS
- JavaScript計算字串位元組長度JavaScript字串
- 正規表示式驗證密碼格式和長度程式碼例項密碼
- golang 計算最長不重複字串長度Golang字串
- JavaScript獲取字串的長度區分漢字JavaScript字串
- 如何擷取指定長度字串區分漢字和字元字串字元
- 計算瀏覽器垂直滾動條的寬度程式碼例項瀏覽器
- js split()分割字串生成陣列程式碼例項JS字串陣列
- 原生js刪除字串中空格程式碼例項JS字串
- js將物件轉換為字串程式碼例項JS物件字串
- js刪除字串兩端空格程式碼例項JS字串
- js實現的字串簡單編碼和解碼程式碼例項JS字串
- js增加千分符程式碼例項JS
- js將字串轉換為編碼序列程式碼例項JS字串
- js將字串轉換為xml物件程式碼例項JS字串XML物件
- js將字串轉換為數字程式碼例項JS字串
- js刪除字串中所有空格程式碼例項JS字串
- 使用js實現儲存讀取js字串程式碼例項JS字串
- js 將json字串轉換為json格式物件程式碼例項JSON字串物件
- js計算兩個時間點時間間隔的程式碼例項JS
- js計算使用者在網頁停留時間的程式碼例項JS網頁
- C++ 過濾出字串的中文(GBK,UTF-8)C++字串
- js刪除字串中最後一個字元程式碼例項JS字串字元