其实这种方法来限制字数的话还有缺陷的,就是在截取中,英文混合的话,英文也按一个字截取了
下面是经过改良以后的函数,供楼主参考
调用方法不变
function Setlen(str,howlong)
if str="" then
leftstr=""
exit function
end if
dim l,t,c, i
str=replace(replace(replace(replace(str," "," "),""",chr(34)),">",">"),"<","<")
l=len(str)
t=0
for i=1 to l
c=Abs(Asc(Mid(str,i,1)))
if c>255 then
t=t+2
else
t=t+1
end if
if t>=howlong then
leftstr=left(str,i) & "..."
exit for
else
leftstr=str
end if
next
leftstr=replace(replace(replace(replace(leftstr," "," "),chr(34),"""),">",">"),"<","<")
end function
Public Function CutStr(str, number)
Dim length, llen, i, value
Dim tmp
tmp = str
If isNull(tmp) Then tmp = ""
length = Len(tmp)
llen = 0
For i = 1 To length
value = AscW(Mid(tmp, i, 1))
If value >= -127 AND value <= 127 Then
llen = llen + 1
Else
llen = llen + 2
End If
'debugPrint(Mid(tmp, i, 1) & ":" & value & "--" & llen)
If llen >= number-3 Then
CutStr = Left(tmp, i) & "..."
Exit Function
End If
Next
CutStr = tmp
End Function