欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

JS获取字符串实际长度!有大用

shiping1 的头像

    今天又添加一个小东西!一个程序员经常要用到的字符串长度检测方法,由于JS原先的长度中文跟英文一样一个字符为1个长度。所以这里就得需要大家自己判断并获取字符串的实际长度了。

    核心代码:

var jmz = {};
jmz.GetLength = function(str) {
    ///<summary>获得字符串实际长度,中文2,英文1</summary>
    ///<param name="str">要获得长度的字符串</param>
    var realLength = 0, len = str.length, charCode = -1;
    for (var i = 0; i < len; i++) {
        charCode = str.charCodeAt(i);
        if (charCode >= 0 && charCode <= 128) realLength += 1;
        else realLength += 2;
    }
    return realLength;
};

    执行代码:

alert(jmz.GetLength('测试测试ceshiceshi));

    效果截图:

image

分类: JavaScript
2
0
(请您对文章做出评价)
« 上一篇:JS动态添加多个事件
» 下一篇:JS一种编码方式
posted on 2009-06-20 10:32 Chinajmz 阅读(61370) 评论(5) 编辑 收藏


  
#1楼 2009-06-20 13:56 | cloudgamer  
var l = str.length; 
var blen = 0; 
for(i=0; i<l; i++) { 
if ((str.charCodeAt(i) & 0xff00) != 0) { 
blen ++; 
} 
blen ++; 
}
  
#2楼[楼主] 2009-06-20 14:14 | Chinajmz  
不错!
其实还有种方法,把双字节的替换成两个单字节的然后再获得长度!
  
#3楼 2012-08-13 16:32 | 居居居居居居居居居居  
1
2
3
4
5
6
var jmz = {};
jmz.GetLength = function(str) {
    return str.replace(/[^\x00-\xff]/g,"aa").length;
};   
 
alert(jmz.GetLength('测试测试ceshiceshi'));
  
#4楼 2013-06-04 14:37 | 冰慧  
@居居居居居居居居居居
这个方法更简便,谢谢!
  
#5楼 2014-04-10 09:09 | wqs1010  
@居居居居居居居居居居
你的方法貌似不对,计算中文的时候是2个字节,要这么写才行
1
2
3
4
5
var jmz = {};
jmz.GetLength = function(str) {
    return str.replace(/[\u0391-\uFFE5]/g,"aa").length;
};   
alert(jmz.GetLength('测试测试ceshiceshi'));

来自 http://www.cnblogs.com/Chinajmz/archive/2009/06/20/1507244.html

普通分类: