如何擷取指定長度字串區分漢字和字元
擷取字串的操作在網頁中十分常見,比如在新聞列表中,往往需要將新聞標題的長度規定在一個恰當的範圍之內,這個時候就需要進行擷取字串的操作。實現方式有多重,比如可以使用String物件的substr()方法實現此功能,不過此方法有時候並不能滿足我們的需求,因為有些時候需要區分漢字還是英文字元,而一個英文字元佔據一個位元組,一個漢字佔據兩個位元組,所以要加以區分。下面就介紹一下如何實現次效果,程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript"> function cutString(str, len) { var strlen = 0; var restr = ""; for (var i = 0; i < str.length; i++) { if (str.charCodeAt(i) > 128) { strlen += 2; } else { strlen++; } restr += str.charAt(i); if (strlen >= len) { return restr; } } return restr; } var mystring = "hello,歡迎來到螞蟻部落" var num = 10; alert(cutString(mystring, num)); </script> </head> <body> </body> </html>
以上程式碼可以擷取指定長度的字串,並且能夠區分漢字和英文字元,下面就簡單介紹一下如何實現此效果:
一.實現原理:
通過字串的length屬性可以取得字串中字元的數目,它是不區分漢字和英文字元的,然後通過for迴圈來遍歷它們,並且通過charCodeAt()函式可以獲得相應索引值字元的ASCII碼值,因為英文字元的ASCII碼值最大為127,所以小128即是英文字元,大於128即是漢字,如果是漢字則strlen值加2,如果是英文字元則加1,並且將相應索引的字元新增到restr中,最後判斷strlen值是否已經大於等於指定長度,如果為真則返回restr,否則繼續進行for迴圈,如果直到for迴圈完成也沒有超過指定長度,那麼最後返回該字串。
二.程式碼註釋:
1.var strlen=0用於儲存每一次for迴圈後字串的長度。
2.var restr=""用於儲存每一次for迴圈後的字串。
3.for迴圈用來便利字串中的每一個字元,這裡的字元是不區分中英文的。
4.if(str.charCodeAt(i)>128)用判斷指定索引的字元是英文字元還是漢字,如果是漢字strlen加2,否則加1。
5.restr+=str.charAt(i);將指定索引的字元新增到restr。
6.if(strlen>=len)判斷是否已經超過指定長度,超過則返回restr,否則繼續執行for迴圈。
7.最後一個return rest:如果整個字串長度都沒有超過指定長度,那麼原樣返回。
相關文章
- JavaScript 擷取指定長度字串 區分漢字和英文字元JavaScript字串字元
- js擷取指定字串長度程式碼區分中英文JS字串
- js如何擷取字串右邊指定長度的字元JS字串字元
- js獲取字串長度區分漢字和英文JS字串
- JavaScript 擷取字串右邊指定長度字元JavaScript字串字元
- 擷取指定長度字串長度程式碼例項字串
- JavaScript獲取字串的長度區分漢字JavaScript字串
- javascript擷取指定長度字串相容中英文JavaScript字串
- ABAP字串操作 擷取字元長度 取位數字串字元
- JavaScript 擷取指定指定區間字串JavaScript字串
- js實現的擷取指定長度字串程式碼JS字串
- jQuery實現的擷取指定長度字串程式碼jQuery字串
- javascript擷取指定指定區間的字串JavaScript字串
- PHP字串學習之如何返回漢字或混合字元的長度PHP字串字元
- javascript擷取指定長度字串後面加點程式碼例項JavaScript字串
- C#擷取指定長度中英文字串方法C#字串
- JS判斷字串長度(英文佔1個字元,中文漢字佔2個字元)JS字串字元
- 擷取 UTF8 編碼字串從首位元組開始指定寬度 (非長度)字串
- JavaScript生成指定長度的數字與字母字串JavaScript字串
- ***PHP各種編碼的漢字字串擷取PHP字串
- 獲取C/C++字串、字元陣列長度C++字串字元陣列
- C# 校驗字串是否漢字、其他字元,數字或字元C#字串字元
- 驗證字串的長度是否在指定的區間字串
- 字串擷取字串
- js如何使用指定字元分割字串JS字元字串
- 包含中文的字串中擷取前N個字元字串字元
- Linux 中 awk命令如何擷取指定欄位的前幾個字元Linux字元
- php 擷取漢字字串 亂碼解決 支援utf8和gb2312的編碼的漢字PHP字串
- js驗證字串長度 是否區分中文JS字串
- 獲得字串實際長度,漢字佔用2個位元組。字串
- 取字串左邊指定長度的子字串字串
- 取字串右邊指定長度的子字串字串
- PHP字串擷取PHP字串
- C語言中strlen求字串長度,求字元陣列長度(空字元,數字0,字元0,陣列部分初始化)C語言字串字元陣列
- 直播軟體原始碼,JS獲取指定長度的隨機字元原始碼JS隨機字元
- php字串擷取函式,支援中文擷取PHP字串函式
- 字串擷取 slice,substr,substring 的區別字串
- mysql 擷取指定的兩個字串之間的內容MySql字串