A-A+
返回字符串的中文字符个数javascript代码
一般的字符长度对中文和英文都是不分别的 如JS里的length,那么如何返回字符串中中文字符的个数呢,不过我自己也想到了一个办法,先去掉非中文字符,再返回length属性,函数以及测试代码如下.
实例代码如下:
- <script type="text/javascript">
- function cLength(str){
- var reg = /[^u4E00-u9FA5uf900-ufa2d]/g;
- //匹配非中文的正则表达式
- var temp = str.replace(reg,'');
- return temp.length;
- }
- var str = "中文123";
- document.write(str.length+'<br />');
- document.write(cLength(str));
- </script>
结果:
5
2
中文两个,数字三个,正确.
实例,分别检查中文与英文长度,中文为2字节,英文为1字节,代码如下:
- <script language="vbscript">
- Function LeftStr(Str)
- TextCount = Len(Str) '得到整
- For I = 1 To TextCount
- MidMidTemp = Mid(Str,I,1)'得到当前第I个字符
- AscAscTemp = Asc(MidTemp)'得到当前第I个字符的ANSI代码
- If AscTemp > 0 Then '判断英文
- TextLenTextLen = TextLen + 1'累计当前长度(英文)
- Else'判断中文
- TextLenTextLen = TextLen + 2'累计当前长度(中文)
- End If
- Next
- LeftStr = TextLen '输出
- End Function
- msgbox """abcdefg""的长度为:"&leftstr("abcdefg")
- msgbox """加上中文试试!""的长度为:" &leftstr("加上中文试试!")
- </script>
实例,代码如下:
- <script>
- String.prototype.tLength=function(){
- temp=this.replace(/([^x00-xff])/g,"$1$1");
- return temp.length
- }
- alert("中英Quiz".length)
- alert("中英quiz".tLength())
- </script>
实例,下面的测试也正确,代码如下:
- var str = "中文123tets@#!#%$#[][{}";
- document.write(str.length+'<br />');
- document.write(cLength(str));