《javascript判断中文字符长度的函数代码》由会员分享,可在线阅读,更多相关《javascript判断中文字符长度的函数代码(5页珍藏版)》请在金锄头文库上搜索。
1、文档供参考,可复制、编制,期待您的好评与关注! 首先,我们定义一个新的函数getBytes()取得字符串的字节数,在javascript里,这个函数是标准函数。 复制代码 代码如下:String.prototype.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 fa
2、lse; return true; getBytes用正则表达式来判断字符串中包含汉字的个数,包含的汉字都放到数组cArr中,这样cArr的长度就是汉字的总数。getBytes方法返回length加上汉字数,就是总的字节数。 只是使用了x00-xff,这个有点恶心,有些特殊字符也是能匹配到的,比如等。 但是如果使用u4E00-u9FA5的话,却不能匹配到中文以下是另外几种方法,大家可以测试下:一种: 复制代码 代码如下:function _length(str) var len=0; for(var i=0;i)len+=2;elselen+; return len; 二种: 复制代码 代码如
3、下:String.prototype.gblen = function() var len = 0; for (var i=0; i127 | 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; i127 | this.charCodeAt(i)=94) len2 += 2; else len2 +; if (len2 sp.length)
4、 ? len-sp.length: len; for (var i=0; i127 | 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) = + st
5、r1.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()取得字符串的字节数,在java
6、script里,这个函数是标准函数。 复制代码 代码如下:String.prototype.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中
7、,这样cArr的长度就是汉字的总数。getBytes方法返回length加上汉字数,就是总的字节数。 只是使用了x00-xff,这个有点恶心,有些特殊字符也是能匹配到的,比如等。 但是如果使用u4E00-u9FA5的话,却不能匹配到中文以下是另外几种方法,大家可以测试下:一种: 复制代码 代码如下:function _length(str) var len=0; for(var i=0;i)len+=2;elselen+; return len; 二种: 复制代码 代码如下:String.prototype.gblen = function() var len = 0; for (var i=
8、0; i127 | 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; i127 | this.charCodeAt(i)=94) len2 += 2; else len2 +; if (len2 sp.length) ? len-sp.length: len; for (var i=0; i127 | this.charCodeAt(i)
9、=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个汉字。 /