javascript 中英文字符长度和截断处理

因:javascript中的String类自带的length属性 和 substr()方法虽然能判断和截取出字符个数,但是对字节个数却没有处理的方法(众所周知,中文字符占两个字节,英文只占一个)

果:中英文字符在页面上的占位空间存在差异。中文的web开发人员不能一刀切,对中英文都截取同样长度的字符数。

网上大致有两种方法处理中英文字符。一种是把中文字符escape了,然后计算字节长度。一种是用正则表达式把中文字符转换2个字节的符号,然后计算长度

 

推荐第二种方法,简单明了,速度快,效率高。

按照第二种方法,对javascript 的 String类型做以下扩展:

一.String.len() 方法,计算字符串字节个数:

1  String.prototype.len = function ()         
2  {                 
3    return   this .replace( / [^\x00-\xff] / g, " rr " ).length;          
4  }

 

二.String.sub(endindex) 方法,从0开始截取endindex长度的字节数。

 1 
 2  String.prototype.sub  =   function (n)
 3  {    
 4    var  r  =   / [^\x00-\xff] / g;    
 5    if ( this .replace(r,  " mm " ).length  <=  n)  return   this ;   
 6    //  n = n - 3;    
 7    var  m  =  Math.floor(n / 2);    
 8    for ( var  i = m; i < this .length; i ++ ) {    
 9    if ( this .substr( 0 , i).replace(r,  " mm " ).length >= n) {    
10     return   this .substr( 0 , i)  ; }    
11   }  return   this ;   
12  };  

 

 

使用方法:最好写成公用脚本,放到所有脚本前面,调用如下:

 

1  var  a = ' tom正在测试中英文字符处理 ' ;
2  alert(a.len());
3  alert(a.sub( 5 ));

转载于:https://www.cnblogs.com/PatrickChen/archive/2008/10/17/1313250.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值