A-A+

返回字符串的中文字符个数javascript代码

2016年01月18日 前端设计 暂无评论 阅读 7 views 次

一般的字符长度对中文和英文都是不分别的 如JS里的length,那么如何返回字符串中中文字符的个数呢,不过我自己也想到了一个办法,先去掉非中文字符,再返回length属性,函数以及测试代码如下.

实例代码如下:

  1. <script type="text/javascript">   
  2.  function cLength(str){   
  3.   var reg = /[^u4E00-u9FA5uf900-ufa2d]/g;   
  4.   //匹配非中文的正则表达式   
  5.   var temp = str.replace(reg,'');   
  6.   return temp.length;   
  7.  }   
  8.  var str = "中文123";   
  9.  document.write(str.length+'<br />');   
  10.  document.write(cLength(str));   
  11.  </script>  

结果:

5

2

中文两个,数字三个,正确.

实例,分别检查中文与英文长度,中文为2字节,英文为1字节,代码如下:

  1. <script language="vbscript">  
  2. Function LeftStr(Str)  
  3. TextCount = Len(Str) '得到整  
  4. For I = 1 To TextCount      
  5. MidMidTemp = Mid(Str,I,1)'得到当前第I个字符  
  6. AscAscTemp = Asc(MidTemp)'得到当前第I个字符的ANSI代码  
  7. If AscTemp > 0 Then '判断英文  
  8. TextLenTextLen = TextLen + 1'累计当前长度(英文)  
  9. Else'判断中文  
  10. TextLenTextLen = TextLen + 2'累计当前长度(中文)  
  11. End If  
  12. Next  
  13. LeftStr = TextLen '输出  
  14. End Function  
  15. msgbox """abcdefg""的长度为:"&leftstr("abcdefg")  
  16. msgbox """加上中文试试!""的长度为:" &leftstr("加上中文试试!")  
  17. </script>  

实例,代码如下:

  1. <script>  
  2. String.prototype.tLength=function(){  
  3. temp=this.replace(/([^x00-xff])/g,"$1$1");  
  4. return temp.length  
  5. }  
  6. alert("中英Quiz".length)  
  7. alert("中英quiz".tLength())  
  8. </script>  

实例,下面的测试也正确,代码如下:

  1. var str = "中文123tets@#!#%$#[][{}";   
  2. document.write(str.length+'<br />');   
  3. document.write(cLength(str));  
标签:

给我留言