对于VB的字符串,几个专门“武器”大概有:
StrConv() 'unicode与ansi的互换 , 常量vbUnicode,vbFromUnicode
VarPtr() '-- 获得字符串变量的地址
StrPtr() '-- 获得字符串缓冲区的地址
Asc(), AscB(), AscW()
Chr(), ChrB(), ChrW()
Len(), LenB()
vbNullString, vbNullChar
以Asc、AscB、AscW为例,其区别如下。
Asc(string) 返回与字符串的第一个字母对应的 ANSI 字符代码。返回值:英文 >0,中文 <0。
AscB(binstr) 适用于二进制数据。AscB 不是返回第一个字符的字符代码,而是返回首字节。
AscW(string) 是为使用 Unicode 字符的 32 位平台提供的。它返回 Unicode (宽型)字符代码,因此可以避免从 ANSI 到 Unicode 的代码转换。它的返回值与 JavaScript 中的 charCodeAt 相同。返回值:英文 >0,中文 >255
可以下面的例子:
新建From1(窗体),新建Command1(按钮CommandButton),代码:
Private Sub Command1_Click()
Dim str1 As String, str2 As String
str1 = "想你So"
str2 = "So想你"
Debug.Print Asc(str1), AscB(str1), AscW(str1) '-12309 243 24819
Debug.Print Asc(str2), AscB(str2), AscW(str2) ' 83 83 83
Debug.Print Chr(-12309) & "*", ChrB(243) & "*", ChrW(24819) & "*" '想* ? 想*
Debug.Print Chr(83) & "*", ChrB(83) & "*", ChrW(83) & "*" 'S* ? S*
str2 = ChrB(83) & ChrB(0) '"S"由二进制83和二进制0表示
Debug.Print str2 'S
End Sub
运行结果:
-12309 243 24819
83 83 83
想* ? 想*
S* ? S*
S