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数组快速打乱重排的方法
Jan 02 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
Oct 30 Javascript
javascript产生随机数方法汇总
Jan 25 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
Apr 22 Javascript
JavaScript实现购物车基本功能
Jul 21 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
Jul 22 Javascript
浅谈开发eslint规则
Oct 01 Javascript
详解基于webpack&amp;gettext的前端多语言方案
Jan 29 Javascript
150行Node.js实现的dns代理工具
Aug 02 Javascript
基于form-data请求格式详解
Oct 29 Javascript
Vue中通过vue-router实现命名视图的问题
Apr 23 Javascript
基于原生js实现九宫格算法代码实例
Jul 03 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
用header 发送cookie的php代码
2007/03/16 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
新浪中用来显示flash的函数
2007/04/02 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
快速解决jQuery与其他库冲突的方法介绍
2014/01/02 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
jquery实现简单文字提示效果
2015/12/02 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
vue项目中实现缓存的最佳方案详解
2019/07/11 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
[54:24]Optic vs TNC 2018国际邀请赛小组赛BO2 第二场
2018/08/18 DOTA
Python实现查询某个目录下修改时间最新的文件示例
2018/08/29 Python
python 3.6.2 安装配置方法图文教程
2018/09/18 Python
python使用folium库绘制地图点击框
2018/09/21 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
python suds访问webservice服务实现
2020/06/26 Python
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
英国最大的奢侈珠宝和手表网站:C W Sellors
2017/02/10 全球购物
学生请假条格式
2014/04/11 职场文书
事业单位考察材料范文
2014/12/25 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
青年联谊会致辞
2015/07/31 职场文书
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers