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截取字符串插件区分中英文属于前端实例代码,有关更多实例代码大家可以查看

回复

我来回复
  • 暂无回复内容