当前位置: 代码迷 >> vbScript >> 帮小弟我分析一下这个函数,多谢。
  详细解决方案

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

热度:8881   发布时间:2013-02-26 00:00:00.0
帮我分析一下这个函数,谢谢。。。
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>
  相关解决方案