字符串(String)是VB编程中的一个重要类型。它用于存放字符数据。将一个变量声明为字符串变量的格式为: Dim/Public/Private 变量 As String 或者 Dim/Public/Private 变量 As String * 自然数 后者为所声明的变量指定了长度。例如我们要声明一个长度为3的变量A,可以用语句Dim A As String*3 。注意,指定了长度的字符串只能存放指定长度个字符,当赋值给变量的字符串小于指定的长度时,系统会以空格补足,而当大于指定的长度时,系统会舍去超过长度的那部分字符。因而,在进行对指定长度的字符串进行逻辑运算时要特别注意。下面给出一段代码,读者仔细体会一下:
Dim A1 As String * 3 Dim A2 As String * 3 Dim A3 As String * 3 Dim B As String A1 = "12" A2 = "123" A3 = "1234" B = "12" C = "12 " Print A1 Print A2 Print A3 Print B Print C Print A2 = A3 Print A1 = B Print A1 = C 得出的结果是: 12_ 123 123 12 12 True False True 一般情况下,我们使用第一种情况,即不指定字符串的长度。 VB提供了强大的字符串处理功能,下表列出了常用的关于字符串处理的函数: 函数名 功能简述 函数名 功能简述 Asc 取ANSI 字符代码 Mid 取字符 Chr Asc函数的逆运算 Replace 替换字符 Filter 返回符合的一个数组 Right 取右边字符 Format 转化格式 Rtrim 清除右边空格 InStr 包含字符串 Space 生成空格 IsNumeric 判断是否数字 StrComp 比较字符串 Join 合并数组到字符串 Split 分割字符串到数组 Lcase 将字符串转化为小写 String 生成字符 Left 取左边字符 StrReverse 翻转字符串 Len 取字符串长度 Trim 清除两边空格 LTrim 清除右边空格 UCase 转为大写 下面详细介绍这些函数的功能及其用法。 一、 Asc函数与Chr函数 Function Asc(String As String) As Integer Function Chr(CharCode As Long) Asc函数用来取一个字符串的第一个字符的Ascii编码。它是美国信息交换标准码 (American Standard Code for Information Interchange)。例如:Asc(“A”)返回值为65。注意:中文字符等也能使用该函数,同样能返回一个对应的整型值。 Chr函数是Asc函数的逆运算。代码Chr(65)可以返回字符串值”A”。它的返回类型是一般是字符串。我们常用这个函数来取一些无法直接输入或输入困难的字符,如回车符Chr(13)等等。 二、 Mid函数、Right函数和Left函数 Function Mid(String, Start As Long, [Length]) Function Right(String, Length As Long) Function Left(String, Length As Long) 这三个函数都是用来从一个字符串中取字符的,参数String传入一个字符串,Length为要取的长度。它们的不同是Mid可以取指定位置的字符,而Right和Left取的分别是右边合左边的字符。 Mid函数的Start参数是欲取的子字符在原字符串中的起始位置;它的Length函数是可省去的(其他两个函数不能省略这个参数),缺省情况下将取起始位置之后的所有字符。 用法举例: Print Mid(“ABCDEFGHIJK”,2,3) Print Mid(“ABCDEFGHIJK”,2,10) Print Mid(“ABCDEFGHIJK”,2) Print Mid(“ABCDEFGHIJK”,11) 运行结果为: BCD BCDEFGHIJK BCDEFGHIJK BCDEFGHIJK 注意:起始位置参数必须大于等于1,否则程序在运行过程中会报错。而长度(Length)超过了原来的字符串是允许的,此时相当于省略了Length这个参数。 Right(Left)是取右边(左边)指定长度的字符,如: Print Right (“ABCDEFGHIJK”,2) Print Left (“ABCDEFGHIJK”,2) 运行结果为: KJ AB 这三个函数还存在另一个形式,即Mid$、Right$和Left$。它们的用法是与不加“$”一样的,功能上的区别仅在于加了“$”后多做一步转化为字符串的操作。 三、 Format函数 Function Format(Expression, [Format], [FirstDayOfWeek As VbDayOfWeek = vbSunday], [FirstWeekOfYear As VbFirstWeekOfYear = vbFirstJan1]) 这个函数用来转化字符串的形式,它的功能是十分强大的。我们不要被它的原形吓着,看似十分复杂,其实很好理解。 在VB中带有方括号的参数都是可以省略的,但是这个函数中我们一般不省略Format这个参数,因为它代表了一种转化的标准。最后的两个参数用于处理日期的转化,这里不作详细的介绍,有兴趣的读者可查阅Msdn帮助。Expression参数为欲转化的表达式。下表给出了该函数常用的使用方法: 字符 说明 Format(12.34)为 ”12.34” # Format(12.34, “####.###”)为 “12.34” 0 Format(12.34, “0000.000”)为 “0012.340” : Format(1, “00:”)为 “05:” , Format(12345.67, “##,###.###”)为 “12,345.67” % Format(123.4567, “00.0%”)为 “12345.7%”(四舍五入) @ Format(”ABcd”, “@@@@@@”)为 “Abcd” < Format(”ABcd”, “<@@@@@@”)为 “abcd” > Format(”ABcd”, “>@@@@@@”)为 “ABCD” ! Format(”ABcd”, “!@@@@@@”)为 “Abcd” 该函数同样也有另一种形式,即Format$。加了“$”后多做一步转化为字符串的操作。 四、 Replace函数 Function Replace(Expression As String, Find As String, Replace As String, [Start As Long = 1], [Count As Long = -1], [Compare As VbCompareMethod = vbBinaryCompare]) As String Replace函数用于字符的替换。它是一个很有用的函数,我们可以使用它来实现诸如Office软件中的替换功能。 Expression参数代表源字符串表达式,Find参数代表欲查找的子字符串(即与替换的子字符串),Replace参数代表替换成的字符串。可选参数Start代表在源字符串中查找替换的起始位置,Count参数代表替换的次数,Compare参数代表了VB字符比较模式(有三种模式:vbBinaryCompare二进制比较,vbDatabaseCompare数据库比较,vbTextCompare文本比较)的一个常量。 Replace函数的返回值是源字符串(从参数Start位置开始)经过替换后的新字符串。若在源字符串中没有匹配与查找的子字符串,函数将不作替换,返回源字符串。 下面举几个例子来说明这个函数的用法: 语句 返回值 Replace("A1BC1DEFG", "1", "0") "A0BC0DEFG" Replace("A1BC1DEFG", "1", "") "ABCDEFG" Replace("A1BC1DEFG", "1", "0", 3) "BC0DEFG" Replace("A1BC1DEFG", "1", "0", 1, 1) "A0BC1DEFG" 读者可以仔细体会一下。 五、 Instr函数 Function InStr([Start], [String1], [String2], [Compare As VbCompareMethod = vbBinaryCompare]) 此函数返回在另一字符串中第一次出现某一字符串的位置,换句话说我们可以用它来查找字符。 Start参数为在源字符串中查找的起始位置(缺省为1);String1参数代表源字符串;String2参数为与查找的字符;Compare为VB比较模式的常量。 函数将返回在源字符串(String1)中从起始位置(Start)开始,第一个被查找的子字符串(String2)在源字符串中出现的位置(整型值)。若源字符串(String1)中未含有要查找的子字符串(String2),则返回0。 下面取一个详细的实例。任务是在Text1框中的字符串中查找Text2的字符串。希望读者能通过这个实例加深对该函数的理解。 首先新建一工程,在Form1上添加两个文本框(Text1、Text2)和一个按钮(Command1)。 打开代码窗口,在通用声明中输入以下代码,声明变量: Dim i As Integer '记录查找位置 输入实现代码: Private Sub Form_Load() i = 1 '初始开始查找位置 Command1.Caption = "查找下一个" End Sub Private Sub Command1_Click() i = InStr(i, Trim(Text1.Text), Trim(Text2.Text)) '进行查找 If i = 0 Then MsgBox "未找到字符串!": i = 1: Exit Sub '没找到 Text1.SelStart = i – 1 '设置Text1文本框对查道的字符高亮显示 Text1.SelLength = Len(Trim(Text2.Text)) Text1.SetFocus i = i + 1 '查找起始位置累计加1 End Sub 最后,保存工程。 调试,编译,运行程序中,在Text1文本框中输入源字符串(如“ABCDEWBFGHIWBJKLMNWB”),在Text2文本框中输入要查找的字符串(如“WB”),单击“查找下一个”按钮进行查找。 六、 Space函数 Function Space(Number As Long) 用此函数返回由指定数目空格组成的字符串。参数Number用于指定空格的数目。它还有另一种形式,即Space$。加了“$”后多做一步转化为字符串的操作。 七、 Filter函数 Function Filter(SourceArray, Match As String, [Include As Boolean = True], [Compare As VbCompareMethod = vbBinaryCompare]) 返回一个匹配字符串的数组。注意返回值是一个数组类型,其中的元素来自源数组。 参数SourceArray代表了源数组,Martch代表一个欲比较的字符串,Include参数代表了匹配的模式——True为包括,False为不包括。若设为True,该函数将源数组(SourceArray)中凡是含有比较字符串(Match)的元素组成新的一个数组并返回;若设为False,该函数将源数组(SourceArray)中凡未是含有比较字符串(Match)的元素组成新的一个数组并返回。Include参数缺省为True。Compare参数为VB比较模式的一个常量。 八、 IsNumeric函数 Function IsNumeric(Expression) As Boolean Isnumeric函数能够用于判断表达式是否为数字。参数Expression为表达式。如果表达式能够转化成数字则返回True。这里读者要注意它的用法,有些可能比较特殊,比如小数点和正负号等。举例说明: 语句 返回结果 说明 IsNumeric ("1A") False IsNumeric ("&H1A") True 十六进制值 IsNumeric ("2e1") True 科学计数法 IsNumeric ("2e+1") True 指数正号可省略 IsNumeric ("2E+1") True E大小写均可 IsNumeric ("2E-1") True 指数为负 IsNumeric ("2-") True 注意负号的位置 IsNumeric ("-2") True 前后都可 IsNumeric ("2+") True 注意正号的位置 IsNumeric ("+2") True 前后都可 IsNumeric ("2+2") False IsNumeric (".") False 小数点 IsNumeric (".1") True 小数点前的0省略 IsNumeric ("1.1") True IsNumeric ("1.1-") True 注意负号 九、 StrComp函数 Function StrComp(String1, String2, [Compare As VbCompareMethod = vbBinaryCompare]) StrComp函数用于比较两个字符串。如果比较对象两者相同,返回0;否则返回-1。 参数String1和String2代表了两个欲进行比较的字符串,参数Compare为VB比较模式的一个常量。 十、 Split函数 Function Split(Expression As String, [Delimiter], [Limit As Long = -1], [Compare As VbCompareMethod = vbBinaryCompare]) 分割一个字符串到数组。 参数Expression为源字符串,Delimiter为分隔符(缺省情况下为空格),Limit代表分割的数量(当分割数目达到设定值时,函数不会再将之后的字符串分割),参数Compare为VB比较模式的一个常量。 用法举例:: Dim a() As String Dim b() As String a = Split("01*23*456*789", "*") b = Split("01*23*456*789", "*", 3) 运行这段代码,a,b是两个数组,它们的结果见下表: 表达式 值 类型 A String(0 to 3) a(0) "01" String a(1) "23" String a(2) "456" String a(3) "789" String B String(0 to 2) b(0) "01" String b(1) "23" String b(2) "456*789" String 十一、Join函数 Function Join(SourceArray, [Delimiter]) As String 将一个数组中的元素合成为一个字符串。这个函数其实是Split函数的逆运算。 参数SourceArray代表源数组,Delimiter为分隔符(缺省情况下为空格)。 用法举例:: Dim a As String Dim b(1) As String b(0) = "012" b(1) = "456" a = Join(b(), "*") 运行结果:a的值为"012*456"。 十二、String函数 Function String(Number As Long, Character) 返回一个指定长度的重复字符串。 Number参数用于指定返回字符串的长度,参数Character代表重复的字符。 用法举例:String(6, "a")得到的结果为"aaaaaa"。 它还有另一种形式,即String $。加了“$”后多做一步转化为字符串的操作。 十三、StrReverse函数 Function StrReverse(Expression As String) As String 翻转一个字符串。 参数Expression代表源字符串,函数将这个字符转翻转并返回。 用法举例:StrReverse("abcdefg")结果为"gfedcba"。 十四、Lcase和Ucase函数 Function LCase(String) Function UCase(String) Lcase函数用于将字符串转化为小写,Ucase函数用于将字符串转化为大写。 参数String为源字符串,注:其中的中文字符是不会转化的。 用法举例: 语句 结果 LCase("ABCdefg文字") "abcdefg文字" UCase("ABCdefg文字") "ABCDEFG文字" 这两个函数都还有另一种形式,即Lcase$和Ucase$。加了“$”后多做一步转化为字符串的操作。 十五、Len函数 Function Len(Expression) 返回存储一个变量所需的字符串的长度和字节数。 参数Expression为源字符串。 用法举例:Len("ABCdefg文字")结果为9。 十六、Ltrim、Rtrim和Trim函数 Function LTrim(String) Function RTrim(String) Function Trim(String) LTrim函数用于去除字符串左边的空格;RTrim函数用于去除字符串右边的空格;Trim函数用于去除字符串左右两边的空格。 参数String代表源字符串,函数返回去除空格后的结果。 这三个函数都还有另一种形式,即LTrim$、RTrim$和Trim$。加了“$”后多做一步转化为字符串的操作。
|