zoukankan      html  css  js  c++  java
  • javascript 中英文字符长度和截断处理

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

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

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

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

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

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

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

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

    String.prototype.sub = function(n)
    {    
     var r = /[^x00-xff]/g;    
     if(this.replace(r, "mm").length <= n) return this;   
     // n = n - 3;    
     var m = Math.floor(n/2);    
     for(var i=m; i<this.length; i++) {    
     if(this.substr(0, i).replace(r, "mm").length>=n) {    
      return this.substr(0, i) ; }    
     } return this;   
    };

     三.根据unicode编码范围

    String.prototype.gblen = function() {    
        var len = 0;    
        for (var i=0; i<this.length; i++) {    
            if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {    
                 len += 2;    
             } else {    
                 len ++;    
             }    
         }    
        return len;    
    }  

    参考:http://blog.csdn.net/testcs_dn/article/details/21412303

     charCodeAt()

    定义和用法

    charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。

    方法 charCodeAt() 与 charAt() 方法执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的是字符子串。

    字符编码:http://www.cnblogs.com/darr/p/5355178.html

  • 相关阅读:
    Linux系统下ping命令报错 name or service not know
    利用Kettle进行SQLServer与Oracle之间的数据迁移实践
    STS中配置MyBatis代码生成器
    GeoServer中配置GeoWebCache切片缓存目录
    Win10下安装msi程序包时报2503、2502错误问题及其解决办法
    常用办公软件推荐
    Excel中使用VBA进行度分秒与十进制度的转换
    ArcGIS下图层范围不正确的两种处理方式
    更改GeoServer的端口号
    Tomcat跨域访问配置
  • 原文地址:https://www.cnblogs.com/darr/p/5354858.html
Copyright © 2011-2022 走看看