首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > vbScript >

帮小弟我分析一下这个函数,多谢。

2012-02-12 
帮我分析一下这个函数,谢谢。。。Function GetLen(str)Dim l, t, c, il Len(str)t lFor i 1 To lc As

帮我分析一下这个函数,谢谢。。。
Function GetLen(str)
  Dim l, t, c, i
  l = Len(str)
  t = l
  For i = 1 To l
  c = Asc(Mid(str, i, 1))
  If c < 0 Then c = c + 65536 
  If c > 255 Then t = t + 1  
  Next
  GetLen = t
  End Function
问题:这个函数是干什么用的?“If c < 0 Then c = c + 65536
If c > 255 Then t = t + 1 ”实现的是什么功能?

[解决办法]
取得一个字符串所占的字节数。可以处理中文和英文混合的字符串,一个英文字母字节数为1,一个汉字字节数为2.常用于在将字符串存入数据库之前检查字符串的长度。

如 
GetLen("aaa")=3
GetLen("aaa你好")=3+2*2=7


[解决办法]
应该是实现统计字符串的字节长度, 中文字符是2个字节,英文等ascii字符是1个字节。函数好像少了对t的计数.
If c < 0 Then c = c + 65536 将机器内码转成字符的acii码 (通过加2^16(2字节))
10000000000000000
If c > 255 Then t = t + 1 如果不是英文等ascii字符则长度为2,要用2个字节存取
[解决办法]
不过建议用js,方法如下

JScript code
<script type="text/javascript">function getlen(s) { var l = 0; var a = s.split(""); for (var i=0;i<a.length;i++) { if (a[i].charCodeAt(0)<299) { l++; } else { l+=2; } } return l; } document.write(getlen('aaa'));document.write(getlen('aaa你好'));</script> 

热点排行