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下给元素添加事件的方法与代码
Aug 13 Javascript
Extjs在exlipse中设置自动提示的方法
Apr 07 Javascript
Js实现手机发送验证码时按钮延迟操作
Jun 20 Javascript
JS数组合并push与concat区别分析
Dec 17 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
May 30 Javascript
Swiper自定义分页器使用详解
Dec 28 Javascript
vue中的数据绑定原理的实现
Jul 02 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
Dec 11 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
Nov 04 Javascript
js实现无限层级树形数据结构(创新算法)
Feb 27 Javascript
vue实现淘宝购物车功能
Apr 20 Javascript
cypress测试本地web应用
Jun 01 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
域名和cookie问题(域名后缀)
2012/10/10 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
2014/10/16 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
JavaScript实现三级级联特效
2017/11/05 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
2018/10/10 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
vue+iview使用树形控件的具体使用
2020/11/02 Javascript
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
解析Python中的二进制位运算符
2015/05/13 Python
详解Python网络爬虫功能的基本写法
2016/01/28 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
Intersport西班牙:在线体育商店
2019/11/06 全球购物
青年文明号事迹材料
2014/01/18 职场文书
基层党员公开承诺书
2014/05/29 职场文书
低碳环保标语
2014/06/12 职场文书
洗手间标语
2014/06/23 职场文书
单位授权委托书范文
2014/08/02 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
西安兵马俑导游词
2015/02/02 职场文书
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android