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 相关文章推荐
JavaScript XML和string相互转化实现代码
Jul 04 Javascript
JQuery与JSon实现的无刷新分页代码
Sep 13 Javascript
JS 实现点击a标签的时候让其背景更换
Oct 15 Javascript
ionic隐藏tabs的方法
Aug 29 Javascript
js实现右键自定义菜单
Dec 03 Javascript
js中的触发事件对象event.srcElement与event.target详解
Mar 15 Javascript
swiper 解决动态加载数据滑动失效的问题
Feb 26 Javascript
vscode中vue-cli项目es-lint的配置方法
Jul 30 Javascript
webpack4实现不同的导出类型
Apr 09 Javascript
layui监听单元格编辑前后交互的例子
Sep 16 Javascript
微信小程序获取地理位置及经纬度授权代码实例
Sep 18 Javascript
layui-table获得当前行的上/下一行数据的例子
Sep 24 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 DataGrid 实现代码
2009/08/12 PHP
php 一元分词算法
2009/11/30 PHP
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
php实现RSA加密类实例
2015/03/26 PHP
PHP生成plist数据的方法
2015/06/16 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
PHP 实现链式操作
2021/03/09 PHP
JavaScript基础知识之数据类型
2012/08/06 Javascript
jQuery基础知识小结
2014/12/22 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
jQuery实现滚动效果
2017/11/17 jQuery
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
Python实现把xml或xsl转换为html格式
2015/04/08 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
解决python运行效率不高的问题
2020/07/20 Python
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
学习心得体会
2014/01/01 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
2014年市场部工作总结
2014/11/25 职场文书
英雄儿女观后感
2015/06/09 职场文书
高三化学教学反思
2016/02/22 职场文书
导游词之任弼时故居
2020/01/07 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
Java基础之线程锁相关知识总结
2021/06/30 Java/Android