帮我分析一下这个函数,谢谢。。。
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,方法如下
<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>