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 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
Apr 07 Javascript
js 与 php 通过json数据进行通讯示例
Mar 26 Javascript
浅谈JavaScript字符集
May 22 Javascript
JQuery中extend的用法实例分析
Feb 08 Javascript
JQuery跳出each循环的方法
Apr 16 Javascript
浅析JavaScript作用域链、执行上下文与闭包
Feb 01 Javascript
关于JavaScript作用域你想知道的一切
Feb 04 Javascript
js发送短信倒计时的简单实现方法
Sep 08 Javascript
node前端模板引擎Jade之标签的基本写法
May 11 Javascript
layui 实现表单和文件上传一起传到后台的例子
Sep 16 Javascript
原生js实现的金山打字小游戏(实例代码详解)
Mar 16 Javascript
JavaScript动画实例之粒子文本的实现方法详解
Jul 28 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
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
利用jQuery 实现GridView异步排序、分页的代码
2010/02/06 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
Angular动态添加、删除输入框并计算值实例代码
2017/03/29 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
python清除字符串中间空格的实例讲解
2018/05/11 Python
python实时监控cpu小工具
2018/06/21 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
怎样写好自荐信和推荐信
2013/12/26 职场文书
中专生职业生涯规划书范文
2013/12/29 职场文书
公司企业表扬信
2014/01/11 职场文书
茶叶店创业计划书范文
2014/01/19 职场文书
采购经理岗位职责
2014/02/16 职场文书
《小池塘》教学反思
2014/02/28 职场文书
流动人口婚育证明
2014/10/19 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL