1、处理机制
在VB4.0以后,字符串采用统一编码方式,即“UniCode”。
早期英文字符占用1个字节,汉字占用2个字节,即ANSI方式;UniCode方式下,所有字符都占用2个字节。
在字符串函数中,考虑的是字符个数,而不是字节数。
为了兼容早期的软件,可使用转换函数StrConv把字符串转换为指定格式。
新字符串=StrConv(待转字符串,转换常数)
常数
值
说明
vbUpperCase
1
将字符串文字转成大写。
vbLowerCase
2
将字符串文字转成小写。
vbProperCase
3
将字符串中每个字的开头字母转成大写。
vbUnicode
64
根据系统的缺省码页将字符串转成 Unicode。
vbFromUnicode
128
将字符串由 Unicode 转成系统的缺省码页。
当在Unicode方式下,必须用加了“B”的字符串函数来处理ANSI的字符串才能得到正确的值,函数如下:
处理Unicode的字符串的函数名
处理ANSI的字符串的函数名
len
lenB
left
leftB
right
rightB
mid
midB
instr
instrB
函数说明见下面:
例:运行下面程序,查看两种编码的使用区别。
Private Sub Command1_Click()
Dim tempStr, newStr As String
tempStr = "VB程序设计"
Print "tempStr="; tempStr
newStr = StrConv(tempStr, vbFromUnicode)
Print "******"
Print "执行newStr = StrConv(tempStr, vbFromUnicode)后:"
Print "newStr="; newStr
Print "LenB(newStr)="; LenB(newStr)
Print "注:每个长度单位为1个字节,字符占1个,汉字占2个"
Print "Len(newstr)="; Len(newStr)
Print "注:每个长度单位为2个字节,字符占半个,汉字占1个"
Print "******"
newStr = StrConv(newStr, vbUnicode)
Print "执行newStr = StrConv(tempStr, vbUnicode)后:"
Print "newStr="; newStr
Print "LenB(newStr)="; LenB(newStr)
Print "注:每个长度单位为1个字节,字符占2个,汉字占2个"
Print "Len(newStr)="; Len(newStr)
Print "注:每个长度单位为2个字节,字符占1个,汉字占1个"
End Sub
2、字符串函数
删除空格字符串
去掉字符串左部连续空格:LTrim$(字符串)
去掉字符串左部连续空格:RTrim$(字符串)
去掉字符串两边连续空格:Trim$(字符串)
例:使用函数。查看运行结果。
Private Sub Command1_Click()
aaa1 = "aaaaa "
bbb1 = " bbbbb"
ccc1 = " ccccc "
Print "|" + LTrim(aaa1) + "|" + LTrim(bbb1) + "|" + LTrim(ccc1) + "|"
Print "|" + RTrim(aaa1) + "|" + RTrim(bbb1) + "|" + RTrim(ccc1) + "|"
Print "|" + Trim(aaa1) + "|" + Trim(bbb1) + "|" + Trim(ccc1) + "|"
End Sub
字符串截取函数
左部截取:Left$(字符串,n) 从左部开始取n个字符
右部截取:Right$(字符串,n) 从右部取n个字符
中部截取:Mid$(字符串,p,n) 从左部开始的第p个字符,取连续n个字符
例:使用函数。查看运行结果。
Private Sub Command1_Click()
MyString = "Mid Function Demo"
FirstWord = Left(MyString, 3) ' 返回 "Mid"。
LastWord = Right(MyString, 4) ' 返回 "Demo"。
MidWords = Mid(MyString, 5) ' 返回 "Funcion Demo"。
Print FirstWord, LastWord, MidWords
End Sub
字符串长度测试函数
Len(字符串):字符串的长度。
Len(变量名):变量的存储空间。
例:使用函数。查看运行结果。
Private Type CustomerRecord ' 定义用户自定义的数据类型。
ID As Integer ' 将此定义放在常规模块中。
Name As String * 10
Address As String * 30
End Type
Private Sub Command1_Click()
Dim Customer As CustomerRecord ' 声明变量。
Dim MyInt As Integer, MyCur As Currency
Dim MyString, MyLen
MyString = "Hello World" ' 设置变量初值。
MyLen = Len(MyInt) ' 返回 2。
Print MyLen
MyLen = Len(Customer) ' 返回 42。
Print MyLen
MyLen = Len(MyString) ' 返回 11。
Print MyLen
MyLen = Len(MyCur) ' 返回 8。
Print MyLen
End Sub
String$函数
String$(n,ASCII码值):返回由该ASCII码指定的字符组成的n个字符的字符串
String$(n,字符串):返回由该字符串的第一个字符组成n个字符的字符串
例:使用函数。查看运行结果。
Private Sub Command1_Click()
Print String$(6, 65) '返回字符串"AAAAAA
Print String$(3, "c") '返回字符串"ccc"
End Sub
空格函数
Space$(n):返回由n个空格组成的字符串
例:使用函数。查看运行结果。
Private Sub Command1_Click()
Print "start" + Space(3) + "END" '返回字符串"start END"
Print "start" + "123" + "END" '返回字符串"start123END"
End Sub
字符串匹配函数
Instr$([开始位置,]string1,string2[,n]) 查找某字符串在另一个字符串中首次出现的位置。
n为0,二进制比较(区分大小写);n为1,文本方式比较(不区分大小写);n为2,数据库信息比较。
返回的结果:
如果
InStr返回
string1 为零长度
0
string1 为 Null
Null
string2 为零长度
开始位置
string2 为 Null
Null
string2 找不到
0
在 string1 中找到string2
找到的位置
开始位置 > string2
0
例:使用函数。查看运行结果。
Private Sub Command1_Click()
Dim SearchString, SearchChar, MyPos
SearchString = "XXpXXpXXPXXP" ' 被搜索的字符串。
SearchChar = "P" ' 要查找字符串 "P"。
' 从第四个字符开始,以文本比较的方式找起。返回值为 6(小写 p)。
' 小写 p 和大写 P 在文本比较下是一样的。
MyPos = InStr(4, SearchString, SearchChar, 1)
Print MyPos
' 从第一个字符开使,以二进制比较的方式找起。返回值为 9(大写 P)。
' 小写 p 和大写 P 在二进制比较下是不一样的。
MyPos = InStr(1, SearchString, SearchChar, 0)
Print MyPos
' 缺省的比对方式为二进制比较(最后一个参数可省略)。
MyPos1 = InStr(SearchString, SearchChar) ' 返回 9。
mypos2 = InStr(1, SearchString, "W") ' 返回 0。
Print MyPos1, mypos2
End Sub
字母大小写转换函数
Ucase$(字符串):将字符串转换为大写
Lcase$(字符串):将字符串转换为小写
例:使用函数。查看运行结果。
Private Sub Command1_Click()
Print UCase$("Rose") '返回字符串"ROSE"
Print LCase$("Rose") '返回字符串"rose"
End Sub
替换字符串命令
Mid$(字符串,位置[,L])=子字符串
说明:在字符串中,从指定位置开始L个字符被子字符串替换,如果子字符串长度大于L,子字符串被截取;如果L没有,则替换后的字符串长度和被替换前的字符串长度一样。
例:使用函数。查看运行结果。
Private Sub Command1_Click()
Dim MyString
MyString = "The dog jumps" ' 设置字符串初值。
Mid(MyString, 5, 3) = "fox"
Print MyString ' MyString = "The fox jumps"
Mid(MyString, 5) = "cow"
Print MyString ' MyString = "The cow jumps"
Mid(MyString, 5) = "cow jumped over"
Print MyString ' MyString = "The cow jumpe"
Mid(MyString, 5, 3) = "duck"
Print MyString ' MyString = "The duc jumpe"
End Sub
没有评论:
发表评论