Len("1234") = 4 ----------->打印时占4
len("中国人民") = 4 ----------->打印时占8
Len("中国12") = 4 ----------->打印时占6lenB("1234") = 8 ----------->打印时占4
lenB("中国人民") = 8 ----------->打印时占8
lenb("中国12") = 8 ----------->打印时占6对于一个字符串我如何知道打印的时候/或显示的时候到底占多少位???
len("中国人民") = 4 ----------->打印时占8
Len("中国12") = 4 ----------->打印时占6lenB("1234") = 8 ----------->打印时占4
lenB("中国人民") = 8 ----------->打印时占8
lenb("中国12") = 8 ----------->打印时占6对于一个字符串我如何知道打印的时候/或显示的时候到底占多少位???
Len和LenB函数
Visual Basic有两个返回字符串长度的函数:Len和LenB。它们都可以接收一个BSTR或是一个ANSI BSTR,并且返回一个长整型数值。以下的代码说明了一切:
s = "help"
Debug.Print Len(s), LenB(s)
Debug.Print Len(StrConv(s, vbFromUnicode)), LenB(StrConv(s, vbFromUnicode))
输出结果是:
4 8
2 4
这表明,Len返回的是字符数,而LenB返回的是在BSTR中的字节数。
Debug.Print LenB(StrConv(s, vbFromUnicode))
输出结果是: 4? 6? 8?
8
?len("啊a")
2 lenb返回字节数,但由于VB采用UniCode编码,不管中西文,都占2字节
?lenb("啊a")
4 想把中文字符当成2字节,西文字符1字节,得先用StrConv转换
?lenb(strconv("啊a",&H80))
3
'调用 lstrlen 除了程序比较简短之外, 速度也比我们写 VB 程序判断中英文字然后计算长度来的快。
Private Sub Command1_Click()
Dim s As String
Dim i As Long
s = "1234"
i = lstrlen(s + Chr(0)) 'i返回4
MsgBox CStr(i)
s = "中国人民"
i = lstrlen(s + Chr(0)) 'i返回8
MsgBox CStr(i)
s = "中国12"
i = lstrlen(s + Chr(0)) 'i返回6
MsgBox CStr(i)
End Sub