js处理包含中文的字符串实例


Posted in Javascript onOctober 11, 2017

场景:

js中String类型自带的属性length获取的是字符串的字符数目,但是前端经常会需要限制字符串的显示长度,一个中文字符又大概占两个英文小写字符的显示位置,所以中英文混合的情况下用length值来判断显示长度往往并不正确。

常规的解决办法是遍历字符串,中文字符计长度2,非中文字符计长度1,通过新计算出来长度总和来限制字符串的显示长度。看代码↓↓↓

var Tools ={
 //是否包含中文
 hasZh: function(str){
  for(var i = 0;i < str.length; i++)
  {
   if(str.charCodeAt(i) > 255) //如果是汉字,则字符串长度加2
    return true;
   return false;
  }
 },
 //重新计算长度,中文+2,英文+1
 getlen: function(str){
  var strlen = 0;
  for(var i = 0;i < str.length; i++)
  {
   if(str.charCodeAt(i) > 255) //如果是汉字,则字符串长度加2
    strlen += 2;
   else
    strlen++;
  }
  return strlen;
 },
 //限制长度
 limitlen: function(str, len){
  var result = "";
  var strlen = 0;
  for(var i = 0;i < str.length; i++)
  {
   if(str.charCodeAt(i) > 255) //如果是汉字,则字符串长度加2
    strlen += 2;
   else
    strlen++;

   result += str.substr(i,1);

   if(strlen >= len){
    break;
   }
  }
  return result;
 }
}

这种方法的原理是根据中英文的unicode编码范围不同来判断的,中文占2个字节,英文占1个字节,所以中文的unicode编码值肯定大于2^8-1=255。

上述方法可以更严谨一点:就是考虑unicode编码范围,具体的范围可以戳Unicode Table

PS: 汉字的unicode编码范围16进制为4E00-9FA5,10进制则为:19968-40869,即判断中文的准确表达式为:

str.charCodeAt(i)>=19968 && str.charCodeAt(i)<=40869

插一句不太严谨的话,代码不用限制太严谨的范围,毕竟你不知道用户(测试)会输哪些奇怪的东西。

以上这篇js处理包含中文的字符串实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js计算页面执行时间的函数
Dec 07 Javascript
JavaScript中把数字转换为字符串的程序代码
Jun 19 Javascript
jQuery控制iFrame(实例代码)
Nov 19 Javascript
javaScript中的this示例学习详解及工作原理
Jan 13 Javascript
通过$(this)使用jQuery包装后的方法或属性
May 18 Javascript
jquery显示隐藏input对象
Jul 21 Javascript
javascript操作数组详解
Dec 17 Javascript
JavaScript返回网页中锚点数目的方法
Apr 03 Javascript
JavaScript 事件对内存和性能的影响
Jan 22 Javascript
js实现模糊匹配功能
Feb 15 Javascript
解决vuex刷新状态初始化的方法实现
Aug 15 Javascript
JS异步宏队列微队列原理详解
Sep 09 Javascript
解决JQuery全选/反选第二次失效的问题
Oct 11 #jQuery
React根据宽度自适应高度的示例代码
Oct 11 #Javascript
详解vue中使用express+fetch获取本地json文件
Oct 10 #Javascript
vue router自动判断左右翻页转场动画效果
Oct 10 #Javascript
angular2 ng2 @input和@output理解及示例
Oct 10 #Javascript
ionic选择多张图片上传的示例代码
Oct 10 #Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
Oct 10 #Javascript
You might like
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
PHP Reflection API详解
2015/05/12 PHP
JavaScript操纵窗口的方法小结
2013/06/28 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
2016/09/27 Javascript
BootStrapTable 单选及取值的实现方法
2017/01/10 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
英国安全产品购物网站:The Safe Shop
2017/03/20 全球购物
Shell如何接收变量输入
2016/08/06 面试题
介绍下Java中==和equals的区别
2013/09/01 面试题
什么是方法的重载
2013/06/24 面试题
超市中秋节活动方案
2014/02/12 职场文书
房屋租赁协议书
2014/10/18 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
干部作风纪律整顿心得体会
2016/01/23 职场文书
VUE之图片Base64编码使用ElementUI组件上传
2022/04/09 Vue.js