截取字符串功能在大量网站都有应用,比如新闻列表这样的功能,因为新闻的标题长途未必都是恰如其分的,所以要根据需要截取指定长度的字符串,下面就分享一个jQuery实现的插件,此插件能够截取指定长度的字符串,并且能够区分中英文。
代码实例如下:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>jQuery截取字符串插件区分中英文</title>
<script type="text/javascript" src="http://www.softwhy.com/mytest/jQuery/jquery-1.8.3.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,如果要截取的长度大于字符串的长度,那么字符串将会被原样返回。
10function 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){},声明一个函数,用来计算字符串的长度,区分中英文,原理这里就不说了,因为和上面介绍的大同小异。

jQuery截取字符串插件区分中英文:相关推荐

  1. php一个英文几个字符,PHP指定截取字符串中的中英文或数字字符的实例分享

    我们在开发过程中,经常会碰到截取中文英文数字等的问题,大家知道中文所占的字符和英文数字是不同的:然后我们就会在项目的common里写一些日常的函数包含时间计算转换和中英文字符截取的函数:比如截取中英文 ...

  2. php中英文截取字符串长度,PHP截取字符串长度(中英文混合字符串)_PHP教程

    function utf8_substr( $str , $start , $length=null ){ // 先正常截取一遍. $res = substr( $str , $start , $le ...

  3. jquery截取字符串中的数字

    replace(/[^0-9]/ig,"") 效果: for (var i =0; i < artboards1.length; i++) { // 数据伪造的console ...

  4. js 控制字符串长度 区分中英文

    function getStringLength (str) {   let len = 0;   for (let i = 0; i < str.length; i++) {     if ( ...

  5. js截取字符串区分汉字字母代码

    js截取字符串并且区分汉字字母,一个汉字辨别为两个字节. function substr(str, len) {if (!str || !len) {return '';}// 预期计数:中文2字节, ...

  6. ASP如何计算中英文混合字符串长度和截取字符串

    用ASP做网站的时候经常会碰到要截取字符串的情况.ASP中的Len函数不管是中文字符,还是英文字符,统统按一个单位来计算,由于一个中文字符的宽度是一个英文字符宽度的两倍,在中英文混合的情况下字符串实际 ...

  7. JS 区分中英文字符/获取字符串实际长度(区分中英文)

    获取字符串中全部中文字符 ^x00-x80 是全角字符的范围(注意这里有个非),通过正则来获取字符串中的全角字符. // 获取全部中文字符(字符串) ,返回中文字符组成的数组 function get ...

  8. js截取字符串兼容中英文

    js截取字符串兼容中英文 /** * js截取字符串,中英文都能用 * @param str:需要截取的字符串 * @param len: 需要截取的长度 */ cutstr(str, len) { ...

  9. vue 统计中英文字符串长度_Ant Design Vue 添加区分中英文的长度校验功能

    原本的maxLength属性是不区分全角/半角字符的,对于一些可中英文混合输入地方而言不太合适.所以想找一个可区分全角/半角字符的校验,而且要保证一定的可重用性. 百度搜了一圈都没找到合适的现成的解决 ...

最新文章

  1. 学计算机专业英语报告范文,计算机学习报告
  2. cvs linux权限,Linux下CVS+ACL的权限控制是什么? 爱问知识人
  3. Android 动画小知识点
  4. github上的版本和本地版本冲突的解决方法(Updates were rejected because the tip of your current branch is behind)
  5. c语言程序如何实现递减,写一个程序让非递减变成非递增,用C语言。一个程序用两个函数...
  6. DEDE文章列表加上序号效果
  7. 解读Android 4.0 Camera原生应用程序的设计思路
  8. 微服务SpringCloud中的负载均衡,你都会么?
  9. 事务(进程 ID )与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品。请重新运行该事务...
  10. Windows系统命令整理-Win10
  11. 【论文精读与思考】:深度强化学习的组合优化研究进展
  12. 2.1HTML网页之table标签B
  13. mac mail 删除邮件服务器,这是在Mac上的Mail中自动删除垃圾电子邮件的方法
  14. Summary - 文件导出测试
  15. mac时间机器文件服务器,在 Mac 上可以与时间机器配合使用的磁盘类型
  16. python发微信提醒天气冷了注意保暖_2019天气转冷注意保暖微信 2019天气冷注意保暖的句子(图文)...
  17. 郑莉老师c++第五版 复习笔记
  18. 用什么软件可以快速制作微信视频
  19. Sangfor PDLAN 实验
  20. 顺序结构程序设计例题:从键盘输入梯形的上、下底边长度和高,计算梯形的面积。

热门文章

  1. Effective java 总结1 - 创建和销毁对象
  2. 泰国一监狱摄像头遭攻击后被黑客全球直播,监狱网络或开辟新战场
  3. subprocess句柄无效
  4. 模型的改善与泛化(梯度与等高线)
  5. prometheus存储模型
  6. 120D02s调机帖[转]
  7. 唯品会电商api接口
  8. 什么?“裸辞”一个月拿到13家offer,网友:你是在找存在感吗···
  9. 为什么计算机桌面显示器,为什么电脑屏幕显示器的字体会模糊呢
  10. 一名合格前端工程师的进阶指南!