在VB6 中,字符串就一种类型,而在 VFB 里,就有2中类型
一、ASCII编码字符串 (8位,1个字节内存大小)
电脑中的内存和文件,最小单位就是字节,1个字节是8位的2进制,因此称为 8位或1字节。1个字节的数字从 0 到 255 ,可以表示 256个字符。当然 0 表示无字符,字符就 255个。
ASCII编码字符串 以1个字节为1个文字,详细点击此链接查看
为了更好的理解它,我们称它为英文字符,后来为了可以使用中文,就搞了1个中文占用2个英文字来记录常用字,其它不常用和特殊文字,比方火星文等都会变成“?”(问号)造成文字永久丢失。
编程中代码类型
Dim a As ZString *100 =“abc中文”
Dim b As String =“abc中文”
print len(a),len(b) '打印字符个数
打印结果:7 , 7
常用字符函数:Len Mid Left Right InStr Trim LCase UCase
二、Unicode编码字符串 (16位,2个字节内存大小)
为了更好的使用中文,以及支持全部中文字,衍生出了Unicode编码字符串,我们可以理解为中文字符,不管中文或英文,都占用2个字节内存,可以储存火星文等全系列中文。处理中文一般都推荐这个类型。
编程中代码类型(VB6使用的字符串类型,就是这个)
Dim a As WString *100 ="abc中文"
Dim b As StringW ="abc中文"
print len(a),len(b) '打印字符个数
打印结果:5 , 5
常用字符函数:LenW MidW LeftW RightW InStrW TrimW LCaseW UCaseW
三、固定长度和可变长度
- 固定长度的字符串类型,就是先申请内存,可以最大装载多少文字。
Dim a As ZString *100
Dim a As WString *100
其中,100 表示可以最多容纳 100个文字,但是最后 FB语言会处理成 0编码字符,表示字符结束,因此,100 就是最多可以容纳 99个文字,你给它超过 99个文字,那么超出部分就丢弃掉。
此时内存占用空间,永远都是 100 个,不管你装载几个文字都不影响内存占用。
注: 英文类型占内存是1个文字1个字节, 中文类型占内存1个文字2个字节
- 可变长度的字符串类型,就是字符有几个,就申请多少内存。
Dim b As String
Dim b As StringW
此时最大装载文字个数,受内存限制,一般最大 1G 内存大小。
- 二者优点和缺点
固定长度的处理速度快,浪费内存空间
可变长度的处理速度慢,不浪费内存空间
比方字符拼贴:你会发现速度真的无法比。所以,可以根据自己代码需求来使用字符变量类型。
Dim i As Long
Dim b As ZString * 100005
for i=0 To 100000
b = b & "a"
next
Dim a As String
for i=0 To 100000
a = a & "a"
next
Dim bw As WString * 100005
for i=0 To 100000
bw = bw & "a"
next
Dim aw As Stringw
for i=0 To 100000
aw = aw & "a"
next
四、字符串类型特殊用法
- 字符串中某个文字的字符编码
我们可以用以下函数
Dim a As String ="abc" ,b As StringW ="中文字"
Print Asc(a,1),AscW(b,1)
其中数字 1 是第几个字符
还有一个效率高的方法,用的是 中括号 [] 不是圆括号
Dim a As String ="abc" ,b As StringW ="中文字"
Print a[0],b[0]
数字 0 表示第1个字符,以此类推。
注意 Asc(a,1),AscW(b,1) 属于安全操作,超过字符就返回 0 ,
a[0],b[0] 是不安全操作,不可以乱来,超过字符长度,软件会崩溃。
- String 类型不只是ASCII编码字符串
由于 String 类型 支持 0 字符串,其它字符类型不支持,它就可以装载任何数据,而不单单是文字。String类型可以直接等同于字节数组类型
Dim a As String
Dim b() As UByte
很多时候,使用字节数组类型,写代码比较麻烦,那么使用 a As String 就方便多了。
比方函数返回,不支持数组返回,需要返回时就必须使用 a As String :
Function Myaaa() As String '支持返回
End Function
Function Myaaa() As UByte() '不支持数组返回,编译错
End Function
还有一个字符编码,常用于网页:UTF8 字符编码,那么也是用 a As String
和UTF8 相互转换函数:
Utf8toStr
StrToUtf8
StringWtoUtf8
Utf8toStringW
评论一下?