- 6
- 0
- 约3.79千字
- 约 5页
- 2017-11-20 发布于北京
- 举报
javascript判断中文字符长度的函数代码
首先,我们定义一个新的函数getBytes()取得字符串的字节数,在javascript里,这个函数是标准函数。
复制代码 代码如下:
Stotype.getBytes = function() { var cArr = this.match(/[^x00-xff]/ig); return this.length + (cArr == null ? 0 : cArr.length); } function paramCheck(cur){ if(cur.value.getBytes() 64){ alert(字符超过64个字符); return false; } return true; }
getBytes用正则表达式来判断字符串中包含汉字的个数,包含的汉字都放到数组cArr中,这样cArr的长度就是汉字的总数。getBytes方法返回length加上汉字数,就是总的字节数。 只是使用了[^x00-xff],这个有点恶心,有些特殊字符也是能匹配到的,比如}等。 但是如果使用[^u4E00-u9FA5]的话,却不能匹配到中文……以下是另外几种方法,大家可以测试下:一种:
复制代码 代码如下:
function _length(str){ var len=0; for(var i=0;istr.length;i++){ if(str.charAt(i)~){len+=2;}else{len++;} } return len; }
二种:
复制代码 代码如下:
Stotype.gblen = function() { var len = 0; for (var i=0; ithis.length; i++) { if (this.charCodeAt(i)127 || this.charCodeAt(i)==94) { len += 2; } else { len ++; } } return len; } Stotype.gbtrim = function(len, s) { var str = ; var sp = s || ; var len2 = 0; for (var i=0; ithis.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; ithis.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个汉字。
首先,我们定义一个新的函数getBytes()取得字符串的字节数,在javascript里,这个函数是标准函数。
复制代码 代码如下:
Stotype.getBytes = function() { var cArr = this.match(/[^x00-xff]/ig); return this.length
原创力文档

文档评论(0)