在继续上面的内容时,我想再回顾和强调几个在字符串操作中经常函数:先是几个已经接触过的,Mid(),Asc(),Len(),它们的语法分别是:
Mid(字符型,起始字符,长度)返回子字符串,如果从字符串的第一个字符取起,起始字符为1,依此类推。
Asc(字符型)返回数值,如果参数不是一个字符,而是字符串(多个字符),将返回参数的第一个字符ASCII值。
Len(字符型)返回字符串的长度。
下面我再为你解释几个新的函数:
Left(字符串,长度)将返回字符型,从字符串的第一个字符向左取字符串,与之相对应的是Right(),它将从字符串的最后一个字符向右取字符串。
Chr(数值型)该数值范围从0-255,返回字符型,如Chr(65)可返回字符“A”,这样可以输入一些用键盘无法输入的字符。
Str(数值型)该函数把数值型转换为字符型,也许你觉得数值“123”和字符串“123”没什么区别,但在内存中一个ASCII字符是占一个字节,也就是说字符串“123”占3个字节,而当数值“123”是整型时,它占两个字符,当它是长整型时,占4个字节。与之向对应的是Val(数值型),它把数值型转换为字符型。
记得我们曾在第一章中完成过我们的第一个程序――“Hello World!”它就是一种输入的方法,在设计VB程序时可以通过一组这样的无线钮,它们之间互相排斥,也就是说,只能有一个按钮被选中。它因为很象无线电收音机上的按钮因而得名无线钮。如果要在一个窗体内放置多组无线钮必须用Frame控件把它们区分开来。下面我们在来完成一个例子,顺便熟悉一下另外两个处理字符串的函数――LTrim()和Rtrim(),它们分别用来删除字符串左边的空格和右边的空格,让我们看看它们是如何工作的。
程序窗体如图6-8,由于窗体比较简单,无需修改更多的属性,一共有三个文本框(Text1到3),分别用来显示输入字符,显示把空格换成星号的字符,和经过处理的字符,还有三个无线钮(Option1到3),要修改的只有Caption属性,分别是“删除左边的空格”、“删除右边的空格”和“删除两边的空格”。因为空格在我们在文本框中无法看到空格,所以我们通过一个称作AddStar的函数把原有字符串中的空格转换为星号,使我们能够看到函数的效果。下面在程序中添加代码,首先在General中声明窗体级变量:
Dim LTrimmedword$, RTrimmedword$ ’删除左边空格和右边空格后的字符串
Dim LRTrimmedword$ ’删除两边空格后的字符
然后,我们通过一个叫做addstar的函数为字符串加上星号,以前曾说过函数与过程的分别,函数会返回一个函数值,所以addstar也就相当于一个变量,其实这很好理解,就象中学代数中的函数,函数就相当于变量Y,而函数中的参数则相当于自变量X,当然可能有很多自变量X1、X2……请原谅,我并不想在这里上数学课,因为我厌恶那玩意儿,特别是上了大学之后,好在大二以后就再也不会有数学课了,哈哈……
Function addstar(tempword As String) As String
Dim charindex%
Dim pasteword$ ’加星号后的字符串
For charindex = 1 To Len(tempword)
If Mid(tempword, charindex, 1) = " " Then ’如果字符为空格
pasteword = pasteword + "*"
Else: pasteword = pasteword + Mid(tempword, charindex, 1)
End If
Next
addstar = pasteword ’返回函数值
End Function
下面的代码很简单,并且我为它做了注释,就不再一一解释了,我只想简要的提几句,Ltrim和Rtrim只有一个参数(字符型),另外下面用到了焦点事件,我们曾在第三章中介绍过,当Text1得到焦点(GotFocus)时,清空所有的文本框,当它失去焦点(LostFocus)时,对字符进行addstar并且在Text2中显示。
Private Sub Text1_GotFocus() ’但焦点于Text1
’清除所有文本框中的字符
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub
Private Sub Text1_LostFocus()
Dim Origionword As String
Origionword = Text1.Text
Text2.Text = addstar(Origionword)
LTrimmedword = addstar(LTrim(Origionword))
RTrimmedword = addstar(RTrim(Origionword))
LRTrimmedword = LTrim(RTrim(Origionword))
End Sub
Private Sub Option1_Click()
Text3.Text = LTrimmedword ’显示删除左空格后的字符串
End SubPrivate
Sub Option2_Click()
Text3.Text = RTrimmedword ’显示删除右空格后的字符串
End Sub
Private Sub Option3_Click()
Text3.Text = LRTrimmedword ’显示删除两边空格后的字符串
End Sub
后结果如图6-9。