|
本帖最后由 wang1999 于 2014-4-26 15:01 编辑
前天听完课后,答应你回复你,可一直太忙,今天刚只有一点空,先给出代码给你。有空再深入分析吧
核心是计算中文字节长度,在VB5时代直接可以用LEN函数即可,可UNICODE就不同了。
目前我知道方法有4种,核心代码如下
算法一利用StrConv(比算法二快9倍)
'-----------------------------------------------------------------
Public Function LenEx(VarString As Variant) As Variant
'算法一
LenEx = LenB(StrConv(VarString, vbFromUnicode)) '将Unicode转换为ANSI,然后再计算字节长度
End Function
''算法二
'Public Function LenEx1(VarString As Variant) As Variant
' Dim lLen As Integer, i As Integer
' LenEx1 = 0
' lLen = Len(VarString)
' If lLen Then '如长度不为零
' For i = 1 To lLen
' If Asc(Mid(VarString, i, 1)) < 0 Then
' LenEx1 = LenEx1 + 2
' Else
' LenEx1 = LenEx1 + 1
' End If
' Next
' End If
'End Function
方法四,利用 lstrlenA 函数, 等于利用VB的后台U/A转换,效率跟StrConv差不多。
|
|