我常用的:
代码:
'--------------------------------------------------------------------------------
Function GetStrLen(str)
'--------------------------------------------------------------------------------
'--------------------------------------------------------------------------------
If IsNull(str) Or str = "" Then
getStrLen = 0
Else
Dim i, n, k, chrA
k = 0
n = Len(str)
For i = 1 To n
chrA = Mid(str, i, 1)
If Asc(chrA) >= 0 And Asc(chrA) <= 255 Then
k = k + 1
Else
k = k + 2
End If
Next
getStrLen = k
End If
End Function
原来差不多,不过这个只是将 0-255 之间的认定为单字节字符。
另,常用来截取标题的函数:
代码:
'--------------------------------------------------------------------------------
Function GetStrValue(ByVal str, ByVal i, ByVal str_2)
'--------------------------------------------------------------------------------
'--------------------------------------------------------------------------------
If getStrLen(str) <= i Then
getStrValue = str
Else
Dim j, n, k, chrA
j = i - getStrLen(str_2)
n = 0
k = 0
Do While n < j
k = k + 1
chrA = Mid(str, k, 1)
If Asc(chrA) < 0 Or Asc(chrA) > 255 Then
n = n + 2
If n > j Then k = k - 1
Else
n = n + 1
End If
Loop
getStrValue = Left(Trim(str), k) & str_2
End If
End Function
其中 str 是字符串,i 是需要的字节数(英文算一个,中文算两个),str_2 是用来作为省略标记的字符,例如“...”或者“…”。