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

 更新时间:2017年10月11日 08:48:12   作者:Dantis·Deng  
下面小编就为大家带来一篇js处理包含中文的字符串实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

场景:

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 就地编辑实现代码

    最近正在看《javascript设计模式》,其中有一个'就地编辑'的示例,用来表现不同的继承方式,看完之后想自己凭理解写一个类似的东西。
    2010-05-05
  • js 目录列举函数

    js 目录列举函数

    用js获取文件目录的代码,一般主要是用了区别vbs的一些代码
    2008-11-11
  • JavaScript中使用参数个数实现重载功能

    JavaScript中使用参数个数实现重载功能

    这篇文章主要介绍了JavaScript中使用参数个数实现重载功能,需要的朋友可以参考下
    2017-09-09
  • Bootstrap 响应式实用工具实例详解

    Bootstrap 响应式实用工具实例详解

    Bootstrap 提供了一些辅助类,以便更快地实现对移动设备友好的开发。这些可以通过媒体查询结合大型、小型和中型设备,实现内容对设备的显示和隐藏。下面通过本文给大家分享Bootstrap 响应式实用工具,一起看看吧
    2017-03-03
  • dwr spring的集成实现代码

    dwr spring的集成实现代码

    需正确使用new和spring,注意两者的区别
    2009-03-03
  • 基于JS正则表达式实现模板数据动态渲染(实现思路详解)

    基于JS正则表达式实现模板数据动态渲染(实现思路详解)

    这篇文章主要介绍了基于JS正则表达式实现模板数据动态渲染 ,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • JS 有趣的eval优化输入验证实例代码

    JS 有趣的eval优化输入验证实例代码

    这篇文章介绍了eval优化输入验证实例代码,有需要的朋友可以参考一下
    2013-09-09
  • js拦截alert对话框另类应用

    js拦截alert对话框另类应用

    alert对话框的使用给用户带来了很多的方便,而有些时候不希望让它存在,接下来介绍如何使用js拦截alert对话框,感兴趣的朋友可以了解下
    2013-01-01
  • es6和commonJs的区别解析

    es6和commonJs的区别解析

    这篇文章主要介绍了es6和commonJs的区别,ES6的模块化规范更加先进、灵活,能够适应更多的应用场景,而CommonJS则更加简单、易用,广泛应用于Node.js开发中,在实际应用中,可以根据具体情况选择使用不同的模块化方案,需要的朋友可以参考下
    2023-03-03
  • JS实现样式清新的横排下拉菜单效果

    JS实现样式清新的横排下拉菜单效果

    这篇文章主要介绍了JS实现样式清新的横排下拉菜单效果,通过简单的元素遍历控制页面元素的动态切换效果,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10

最新评论