利用 lstrlen 计算中英文混合字串的长度
在 32-bit 版本的 VB 底下, 将每一个字符都视为两个 Byte, 所以
Len("中英Mixed") 等于 7
LenB("中英Mixed") 等于 14
但是在很多场合底下, 我们希望中文字长度以 2 计算, 英文字母长度以 1 计算, 此时使用的方法如下:
' 欲计算字串 S 的长度
N = 0
For I = 1 To Len(S)
C = Asc(Mid(S, I, 1)) ' 取得第 I 个字符组的字符码
If C >= 0 And C <128 Then ' 英文
N = N + 1
Else ' 中文
N = N + 2
End If
Next
看起来程序有点罗唆, 如果您不喜欢这个方法, 可以使用 Windows API 的 lstrlen 函数, 假设假计算 S 的长度, 则 API 声明式如下:
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
而调用的叙述则是:
n = lstrlen("中英Mixed" + Chr(0))
Print n ' n 将等于 9
请注意调用 lstrlen 时必须加上 Chr(0), 因为此一函数是根据 Chr(0) 来判断字串的结束。
调用 lstrlen 除了程序比较简短之外, 速度也比我们写 VB 程序判断中英文字然后计算长度来的快。
利用 StrConv 计算中英文混合字串的长度