zoukankan      html  css  js  c++  java
  • javascript 判断中文字符长度

    一种:
    function _length(str){
    var len=0;
    for(var i=0;i<str.length;i++){
    if(str.charAt(i)>'~'){len+=2;}else{len++;}
    }
    return len;
    }

    二种:
    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;
    }
    String.prototype.gbtrim = function(len, s) {
    var str = '';
    var sp = s || '';
    var len2 = 0;
    for (var i=0; i<this.length; i++) {
    if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
    len2 += 2;
    } else {
    len2 ++;
    }
    }
    if (len2 <= len) {
    return this;
    }
    len2 = 0;
    len = (len > sp.length) ? len-sp.length: len;
    for (var i=0; i<this.length; i++) {
    if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
    len2 += 2;
    } else {
    len2 ++;
    }
    if (len2 > len) {
    str += sp;
    break;
    }
    str += this.charAt(i);
    }
    return str;
    }
    var str1 = '世上最牛的@#%&们 世上最牛的@#%&们';
    document.write('str1 = '+ str1 +'
    ');
    document.write('length = '+ str1.gblen() +'
    ');
    document.write('gbtrim(10) = '+ str1.gbtrim(10) +'
    ');
    document.write('gbtrim(10, \'…\') = '+ str1.gbtrim(10, '…') +'
    ');
    document.write('gbtrim(12, \'-\' ) = '+ str1.gbtrim(12, '-') +'
    ');

    // gbtrim(len 截取长度,按英文字节长度计算, s截取后的省略字符,如"…" )
    // 备注: 这里中文字符都是当作两个长度来计算的,所以gbtrim中的len为10时,是显示最多5个汉字的。
    // 当汉字数大于5时,由于截取后加上“…”,所以只显示4个汉字。
  • 相关阅读:
    TreeView的自定义绘制图标处理
    业务逻辑层的封装设计
    记一次CS系统与BS的对接集成
    cmd命令使用备忘
    如何有效管理员工
    代码可维护性重要吗?
    Oracle GoldenGate Director安装备忘
    浅析C#深拷贝与浅拷贝
    一首同音叠字诗“石室诗士施氏”
    Ajax原生使用
  • 原文地址:https://www.cnblogs.com/dkblog/p/1980777.html
Copyright © 2011-2022 走看看