jQuery截取字符串插件区分中英文
截取字符串功能在大量网站都有应用,比如新闻列表这样的功能,因为新闻的标题长度未必都恰如其分,所以需要根据需要截取指定长度的字符串,下面分享一个jQuery实现的插件,能够截取指定长度的字符串,并且区分中英文。
代码实例如下:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.pipipi.net/" /> <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()方法一章节。
jQuery截取字符串插件区分中英文,这样的场景在实际项目中还是用的比较多的,关于jQuery截取字符串插件区分中英文就介绍到这了。
jQuery截取字符串插件区分中英文属于前端实例代码,有关更多实例代码大家可以查看。