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

帮忙看看这段代码实现的是什么功能?多谢吭,

2012-02-03 
帮忙看看这段代码实现的是什么功能?谢谢吭,在线等。。。%Function GetLen(str)Dim l, t, c, il Len(str)t

帮忙看看这段代码实现的是什么功能?谢谢吭,在线等。。。
<%
  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
'"len"返回字符串内字符的数目,或是存储一变量所需的字节数。"Mid"从字符串中返回指定数目的字符。
%>
---------------------------------------------------
response.write "<a href='typenews.asp?id="&id&"'title='"&title&"'>"
  if GetLen(title)>Linenum then
  response.write ""&LeftStr(title,Linenum-2)&""
  response.write "..."
  else
  response.write ""&title&""
  end if
在这段代码中“GetLen”函数实现的是什么功能?

[解决办法]
很明显,GetLen(str)返回的是str的某种长度。其实,它是这样定义的:

1、若字符是ASCII字符(不管是全角还是半角,即不管是双字节字符还是单字节字符),则其长度算为1;
2、其它字符(汉字、韩文等)长度算为2。

最后把所有字符的长度相加,就得到GetLen(str)。

If c < 0 Then c = c + 65536 是判断是否是双字节字符,如汉字、全角英文字符。
If c > 255 Then t = t + 1 则继续判断,该双字节字符是否英文字符,因为扩展ASCII字符集的编码范围是0-255,不管是采用单字节编码(半角,真正英文编码),还是双字节编码(如中文国标GB2312),都是一样的,这是为了保持兼容性。

如GetLen("aa")=GetLen("aa")=2,GetLen("aa中")=GetLen("aa中")=4

热点排行