jQuery擷取字串外掛區分中英文
擷取字串功能在大量網站都有應用,比如新聞列表這樣的功能,因為新聞的標題長度未必都恰如其分,所以需要根據需要擷取指定長度的字串,下面分享一個jQuery實現的外掛,能夠擷取指定長度的字串,並且區分中英文。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>jQuery擷取字串外掛區分中英文-螞蟻部落</title> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script type="text/javascript"> (function($){ $.extend($,{ fixedWidth:function(str,length,char){ str=str.toString(); if(!char) char="..."; var num=length-lengthB(str); if(num<0){ str=substringB(str,length-lengthB(char))+char; } return str; function substringB(str,length){ var num=0,len=str.length,tenp=""; if(len){ for(var i=0;i<len;i++){ if(num>length) break; if(str.charCodeAt(i)>255){ num+=2; tenp+=str.charAt(i); } else{ num++; tenp+=str.charAt(i); } } return tenp; } else{ return null; } } function lengthB(str){ var num=0,len=str.length; if(len){ for(var i=0;i<len;i++){ if(str.charCodeAt(i)>255){ num+=2; } else{ num++; } } return num; } else{ return 0; } } } }); })(jQuery); var str="螞蟻部落歡迎您,希望您在這裡能夠有一定的收穫"; document.write($.fixedWidth(str,20)); </script> </head> <body> </body> </html>
如果字串超出了指定長度,那麼擷取規定的長度,超出的以省略號替代,下面介紹一下此外掛實現過程:
一.實現原理:
(1).為jQuery類庫新增fixedWidth方法:
通過 $.extend方法實現,此方法為jQuery類直接新增方法,新增靜態方法,關於 $.extend()函式可以參閱 $.extend()函式用法詳解一章節。
(2).關於中英文區分:
字串的length屬性返回值字串字元的個數,字串中一個英文字元就是一個字元,一個漢字也是一個字元。但是一個英文字元和一個漢字在記憶體佔據的空間不一樣,一個英文字元佔據一個位元組,一個漢字佔據兩個位元組。通過charCodeAt方法判斷,如果返回值大於255,說明是漢字,num加2,否則是英文字元,num加1。
二.程式碼註釋:
(1).(function($){})(jQuery),宣告一個匿名函式,並執行此函式,引數是jQuery。
(2).$.extend($,{}),為jQuery類新增靜態方法。
(3).fixedWidth:function(str,length,char){},具有三個引數,str是要被擷取的原字串,length是要被擷取的長度,char是自定義以何種形式表示有內容超出,預設狀態下是"...",此引數可選。
(4).var str=str.toString(),轉換為字串。
(5).if(!char) char="...",如果沒有沒有提供第三個引數,預設是"..."。
(6).var num=length-lengthB(str),要擷取的字元長度減去字元的長度,經過lengthB函式計算,已經區分了中英文。
(7).if(num<0){},如果小於0,也就是要擷取的長度小於字串的長度。
(8).str=substringB(str,length-lengthB(char))+char,擷取指定字串長度,並加上char。
(9).return str,如果要擷取的長度大於字串的長度,那麼字串將會被原樣返回。
(10).function substringB(str,length){},此函式用來擷取字串,具有兩個引數,第一個引數要被擷取的原字串,第二個是要真正被擷取的字串的長度,這個長度是fixedWidth()函式中第二個引數減去被省略字串替代字元的長度。
(11).var num=0,len=str.length,tenp="",宣告幾個變數並賦值。
(12).if(len),判斷字串是否是空字串。
(13).for(var i=0;i<len;i++){},遍歷字串中的每一個字元。
(14).if(num>length) break,如果num大於真正要被擷取的長度,就跳出本次迴圈。
(15).if(str.charCodeAt(i)>255),判斷指定索引的Unicode編碼是否大約255,如果大於就是漢字,如果小於就是英文字元。
(16).num+=2,將num加2.
(17).tenp+=str.charAt(i),將指定索引的字元追加到tenp中。
(18).else{num++; tenp+=str.charAt(i)},如果是英文字元,num加1,再將指定索引的字元追加到tenp中。
(19).return tenp,返回字串。
(20).function lengthB(str){},宣告一個函式,用來計算字串的長度,區分中英文,原理這裡就不說了,因為和上面介紹的大同小異。
三.相關閱讀:
(1).length屬性參閱JavaScript String length屬性一章節。
(2).charCodeAt()參閱JavaScript String charCodeAt()方法一章節。
(3).charAt()參閱JavaScript String charAt()方法一章節。
相關文章
- js擷取指定字串長度程式碼區分中英文JS字串
- php 擷取中英文混合字串PHP字串
- jQuery字串擷取詳解jQuery字串
- javascript擷取指定長度字串相容中英文JavaScript字串
- 如何擷取指定長度字串區分漢字和字元字串字元
- jquery分頁外掛jQuery
- JavaScript 擷取指定指定區間字串JavaScript字串
- 字串擷取字串
- 擷取圖片生成頭像外掛
- C#擷取指定長度中英文字串方法C#字串
- javascript擷取指定指定區間的字串JavaScript字串
- PHP字串擷取PHP字串
- php字串擷取函式,支援中文擷取PHP字串函式
- 字串擷取 slice,substr,substring 的區別字串
- jQuery實現的擷取指定長度字串程式碼jQuery字串
- JavaScript 擷取指定長度字串 區分漢字和英文字元JavaScript字串字元
- MySQL 字串函式:字串擷取MySql字串函式
- php中英字串擷取PHP字串
- jquery寫的ajax分頁外掛jQuery
- JavaScript計算字串的長度區分中英文JavaScript字串
- iOS擷取NSString字串iOS字串
- Mysql字串擷取函式MySql字串函式
- jQuery 擷取字串以省略號替代jQuery字串
- jQuery外掛jQuery
- iOS NSString字串擷取方法iOS字串
- shell 擷取變數的字串變數字串
- JS字串擷取函式slice(),substring(),substr()的區別JS字串函式
- jquery 外掛站jQuery
- Shell中的字串擷取介紹字串
- C#常用字串擷取C#字串
- shell 使用陣列及字串擷取陣列字串
- Swift 4.0 字串擷取,拼接,字串富文字顯示Swift字串
- JQuery模板外掛-jquery.tmpljQuery
- jQuery的外掛列表jQuery
- JQuery蜂巢圖外掛jQuery
- jQuery外掛推薦jQuery
- jquery外掛寫法jQuery
- Linux下的字串擷取詳解Linux字串