最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小OO 时间:2020-11-27 20:04:48
文档

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

场景。js中String类型自带的属性length获取的是字符串的字符数目,但是前端经常会需要字符串的显示长度,一个中文字符又大概占两个英文小写字符的显示位置,所以中英文混合的情况下用length值来判断显示长度往往并不正确。常规的解决办法是遍历字符串,中文字符计长度2,非中文字符计长度1,通过新计算出来长度总和来字符串的显示长度。看代码↓↓↓。
推荐度:
导读场景。js中String类型自带的属性length获取的是字符串的字符数目,但是前端经常会需要字符串的显示长度,一个中文字符又大概占两个英文小写字符的显示位置,所以中英文混合的情况下用length值来判断显示长度往往并不正确。常规的解决办法是遍历字符串,中文字符计长度2,非中文字符计长度1,通过新计算出来长度总和来字符串的显示长度。看代码↓↓↓。


本文主要为大家带来一篇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

插一句不太严谨的话,代码不用太严谨的范围,毕竟你不知道用户(测试)会输哪些奇怪的东西。

相关推荐:

jQuery字符串全部替换的实现方法

vue语法拼接字符串详解

js截取字符串功能的实现方法

文档

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

场景。js中String类型自带的属性length获取的是字符串的字符数目,但是前端经常会需要字符串的显示长度,一个中文字符又大概占两个英文小写字符的显示位置,所以中英文混合的情况下用length值来判断显示长度往往并不正确。常规的解决办法是遍历字符串,中文字符计长度2,非中文字符计长度1,通过新计算出来长度总和来字符串的显示长度。看代码↓↓↓。
推荐度:
标签: 分享 汉字 包含
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top