字符串(String)是VB編程中的一個重要類型。它用于存放字符數(shù)據(jù)。將一個變量聲明為字符串變量的格式為: Dim/Public/Private 變量 As String 或者 Dim/Public/Private 變量 As String * 自然數(shù) 后者為所聲明的變量指定了長度。例如我們要聲明一個長度為3的變量A,可以用語句Dim A As String*3 。注意,指定了長度的字符串只能存放指定長度個字符,當(dāng)賦值給變量的字符串小于指定的長度時,系統(tǒng)會以空格補足,而當(dāng)大于指定的長度時,系統(tǒng)會舍去超過長度的那部分字符。因而,在進行對指定長度的字符串進行邏輯運算時要特別注意。下面給出一段代碼,讀者仔細體會一下:
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 得出的結(jié)果是: 12_ 123 123 12 12 True False True 一般情況下,我們使用第一種情況,即不指定字符串的長度。 VB提供了強大的字符串處理功能,下表列出了常用的關(guān)于字符串處理的函數(shù): 函數(shù)名 功能簡述 函數(shù)名 功能簡述 Asc 取ANSI 字符代碼 Mid 取字符 Chr Asc函數(shù)的逆運算 Replace 替換字符 Filter 返回符合的一個數(shù)組 Right 取右邊字符 Format 轉(zhuǎn)化格式 Rtrim 清除右邊空格 InStr 包含字符串 Space 生成空格 IsNumeric 判斷是否數(shù)字 StrComp 比較字符串 Join 合并數(shù)組到字符串 Split 分割字符串到數(shù)組 Lcase 將字符串轉(zhuǎn)化為小寫 String 生成字符 Left 取左邊字符 StrReverse 翻轉(zhuǎn)字符串 Len 取字符串長度 Trim 清除兩邊空格 LTrim 清除右邊空格 UCase 轉(zhuǎn)為大寫 下面詳細介紹這些函數(shù)的功能及其用法。 一、 Asc函數(shù)與Chr函數(shù) Function Asc(String As String) As Integer Function Chr(CharCode As Long) Asc函數(shù)用來取一個字符串的第一個字符的Ascii編碼。它是美國信息交換標準碼 (American Standard Code for Information Interchange)。例如:Asc(“A”)返回值為65。注意:中文字符等也能使用該函數(shù),同樣能返回一個對應(yīng)的整型值。 Chr函數(shù)是Asc函數(shù)的逆運算。代碼Chr(65)可以返回字符串值”A”。它的返回類型是一般是字符串。我們常用這個函數(shù)來取一些無法直接輸入或輸入困難的字符,如回車符Chr(13)等等。 二、 Mid函數(shù)、Right函數(shù)和Left函數(shù) Function Mid(String, Start As Long, [Length]) Function Right(String, Length As Long) Function Left(String, Length As Long) 這三個函數(shù)都是用來從一個字符串中取字符的,參數(shù)String傳入一個字符串,Length為要取的長度。它們的不同是Mid可以取指定位置的字符,而Right和Left取的分別是右邊合左邊的字符。 Mid函數(shù)的Start參數(shù)是欲取的子字符在原字符串中的起始位置;它的Length函數(shù)是可省去的(其他兩個函數(shù)不能省略這個參數(shù)),缺省情況下將取起始位置之后的所有字符。 用法舉例: Print Mid(“ABCDEFGHIJK”,2,3) Print Mid(“ABCDEFGHIJK”,2,10) Print Mid(“ABCDEFGHIJK”,2) Print Mid(“ABCDEFGHIJK”,11) 運行結(jié)果為: BCD BCDEFGHIJK BCDEFGHIJK BCDEFGHIJK 注意:起始位置參數(shù)必須大于等于1,否則程序在運行過程中會報錯。而長度(Length)超過了原來的字符串是允許的,此時相當(dāng)于省略了Length這個參數(shù)。 Right(Left)是取右邊(左邊)指定長度的字符,如: Print Right (“ABCDEFGHIJK”,2) Print Left (“ABCDEFGHIJK”,2) 運行結(jié)果為: KJ AB 這三個函數(shù)還存在另一個形式,即Mid$、Right$和Left$。它們的用法是與不加“$”一樣的,功能上的區(qū)別僅在于加了“$”后多做一步轉(zhuǎn)化為字符串的操作。 三、 Format函數(shù) Function Format(Expression, [Format], [FirstDayOfWeek As VbDayOfWeek = vbSunday], [FirstWeekOfYear As VbFirstWeekOfYear = vbFirstJan1]) 這個函數(shù)用來轉(zhuǎn)化字符串的形式,它的功能是十分強大的。我們不要被它的原形嚇著,看似十分復(fù)雜,其實很好理解。 在VB中帶有方括號的參數(shù)都是可以省略的,但是這個函數(shù)中我們一般不省略Format這個參數(shù),因為它代表了一種轉(zhuǎn)化的標準。最后的兩個參數(shù)用于處理日期的轉(zhuǎn)化,這里不作詳細的介紹,有興趣的讀者可查閱Msdn幫助。Expression參數(shù)為欲轉(zhuǎn)化的表達式。下表給出了該函數(shù)常用的使用方法: 字符 說明 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” 該函數(shù)同樣也有另一種形式,即Format$。加了“$”后多做一步轉(zhuǎn)化為字符串的操作。 四、 Replace函數(shù) 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函數(shù)用于字符的替換。它是一個很有用的函數(shù),我們可以使用它來實現(xiàn)諸如Office軟件中的替換功能。 Expression參數(shù)代表源字符串表達式,F(xiàn)ind參數(shù)代表欲查找的子字符串(即與替換的子字符串),Replace參數(shù)代表替換成的字符串??蛇x參數(shù)Start代表在源字符串中查找替換的起始位置,Count參數(shù)代表替換的次數(shù),Compare參數(shù)代表了VB字符比較模式(有三種模式:vbBinaryCompare二進制比較,vbDatabaseCompare數(shù)據(jù)庫比較,vbTextCompare文本比較)的一個常量。 Replace函數(shù)的返回值是源字符串(從參數(shù)Start位置開始)經(jīng)過替換后的新字符串。若在源字符串中沒有匹配與查找的子字符串,函數(shù)將不作替換,返回源字符串。 下面舉幾個例子來說明這個函數(shù)的用法: 語句 返回值 Replace("A1BC1DEFG", "1", "0") "A0BC0DEFG" Replace("A1BC1DEFG", "1", "") "ABCDEFG" Replace("A1BC1DEFG", "1", "0", 3) "BC0DEFG" Replace("A1BC1DEFG", "1", "0", 1, 1) "A0BC1DEFG" 讀者可以仔細體會一下。 五、 Instr函數(shù) Function InStr([Start], [String1], [String2], [Compare As VbCompareMethod = vbBinaryCompare]) 此函數(shù)返回在另一字符串中第一次出現(xiàn)某一字符串的位置,換句話說我們可以用它來查找字符。 Start參數(shù)為在源字符串中查找的起始位置(缺省為1);String1參數(shù)代表源字符串;String2參數(shù)為與查找的字符;Compare為VB比較模式的常量。 函數(shù)將返回在源字符串(String1)中從起始位置(Start)開始,第一個被查找的子字符串(String2)在源字符串中出現(xiàn)的位置(整型值)。若源字符串(String1)中未含有要查找的子字符串(String2),則返回0。 下面取一個詳細的實例。任務(wù)是在Text1框中的字符串中查找Text2的字符串。希望讀者能通過這個實例加深對該函數(shù)的理解。 首先新建一工程,在Form1上添加兩個文本框(Text1、Text2)和一個按鈕(Command1)。 打開代碼窗口,在通用聲明中輸入以下代碼,聲明變量: Dim i As Integer '記錄查找位置 輸入實現(xiàn)代碼: 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 '設(shè)置Text1文本框?qū)Σ榈赖淖址吡溜@示 Text1.SelLength = Len(Trim(Text2.Text)) Text1.SetFocus i = i + 1 '查找起始位置累計加1 End Sub 最后,保存工程。 調(diào)試,編譯,運行程序中,在Text1文本框中輸入源字符串(如“ABCDEWBFGHIWBJKLMNWB”),在Text2文本框中輸入要查找的字符串(如“WB”),單擊“查找下一個”按鈕進行查找。 六、 Space函數(shù) Function Space(Number As Long) 用此函數(shù)返回由指定數(shù)目空格組成的字符串。參數(shù)Number用于指定空格的數(shù)目。它還有另一種形式,即Space$。加了“$”后多做一步轉(zhuǎn)化為字符串的操作。 七、 Filter函數(shù) Function Filter(SourceArray, Match As String, [Include As Boolean = True], [Compare As VbCompareMethod = vbBinaryCompare]) 返回一個匹配字符串的數(shù)組。注意返回值是一個數(shù)組類型,其中的元素來自源數(shù)組。 參數(shù)SourceArray代表了源數(shù)組,Martch代表一個欲比較的字符串,Include參數(shù)代表了匹配的模式——True為包括,F(xiàn)alse為不包括。若設(shè)為True,該函數(shù)將源數(shù)組(SourceArray)中凡是含有比較字符串(Match)的元素組成新的一個數(shù)組并返回;若設(shè)為False,該函數(shù)將源數(shù)組(SourceArray)中凡未是含有比較字符串(Match)的元素組成新的一個數(shù)組并返回。Include參數(shù)缺省為True。Compare參數(shù)為VB比較模式的一個常量。 八、 IsNumeric函數(shù) Function IsNumeric(Expression) As Boolean Isnumeric函數(shù)能夠用于判斷表達式是否為數(shù)字。參數(shù)Expression為表達式。如果表達式能夠轉(zhuǎn)化成數(shù)字則返回True。這里讀者要注意它的用法,有些可能比較特殊,比如小數(shù)點和正負號等。舉例說明: 語句 返回結(jié)果 說明 IsNumeric ("1A") False IsNumeric ("&H1A") True 十六進制值 IsNumeric ("2e1") True 科學(xué)計數(shù)法 IsNumeric ("2e+1") True 指數(shù)正號可省略 IsNumeric ("2E+1") True E大小寫均可 IsNumeric ("2E-1") True 指數(shù)為負 IsNumeric ("2-") True 注意負號的位置 IsNumeric ("-2") True 前后都可 IsNumeric ("2+") True 注意正號的位置 IsNumeric ("+2") True 前后都可 IsNumeric ("2+2") False IsNumeric (".") False 小數(shù)點 IsNumeric (".1") True 小數(shù)點前的0省略 IsNumeric ("1.1") True IsNumeric ("1.1-") True 注意負號 九、 StrComp函數(shù) Function StrComp(String1, String2, [Compare As VbCompareMethod = vbBinaryCompare]) StrComp函數(shù)用于比較兩個字符串。如果比較對象兩者相同,返回0;否則返回-1。 參數(shù)String1和String2代表了兩個欲進行比較的字符串,參數(shù)Compare為VB比較模式的一個常量。 十、 Split函數(shù) Function Split(Expression As String, [Delimiter], [Limit As Long = -1], [Compare As VbCompareMethod = vbBinaryCompare]) 分割一個字符串到數(shù)組。 參數(shù)Expression為源字符串,Delimiter為分隔符(缺省情況下為空格),Limit代表分割的數(shù)量(當(dāng)分割數(shù)目達到設(shè)定值時,函數(shù)不會再將之后的字符串分割),參數(shù)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是兩個數(shù)組,它們的結(jié)果見下表: 表達式 值 類型 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函數(shù) Function Join(SourceArray, [Delimiter]) As String 將一個數(shù)組中的元素合成為一個字符串。這個函數(shù)其實是Split函數(shù)的逆運算。 參數(shù)SourceArray代表源數(shù)組,Delimiter為分隔符(缺省情況下為空格)。 用法舉例:: Dim a As String Dim b(1) As String b(0) = "012" b(1) = "456" a = Join(b(), "*") 運行結(jié)果:a的值為"012*456"。 十二、String函數(shù) Function String(Number As Long, Character) 返回一個指定長度的重復(fù)字符串。 Number參數(shù)用于指定返回字符串的長度,參數(shù)Character代表重復(fù)的字符。 用法舉例:String(6, "a")得到的結(jié)果為"aaaaaa"。 它還有另一種形式,即String $。加了“$”后多做一步轉(zhuǎn)化為字符串的操作。 十三、StrReverse函數(shù) Function StrReverse(Expression As String) As String 翻轉(zhuǎn)一個字符串。 參數(shù)Expression代表源字符串,函數(shù)將這個字符轉(zhuǎn)翻轉(zhuǎn)并返回。 用法舉例:StrReverse("abcdefg")結(jié)果為"gfedcba"。 十四、Lcase和Ucase函數(shù) Function LCase(String) Function UCase(String) Lcase函數(shù)用于將字符串轉(zhuǎn)化為小寫,Ucase函數(shù)用于將字符串轉(zhuǎn)化為大寫。 參數(shù)String為源字符串,注:其中的中文字符是不會轉(zhuǎn)化的。 用法舉例: 語句 結(jié)果 LCase("ABCdefg文字") "abcdefg文字" UCase("ABCdefg文字") "ABCDEFG文字" 這兩個函數(shù)都還有另一種形式,即Lcase$和Ucase$。加了“$”后多做一步轉(zhuǎn)化為字符串的操作。 十五、Len函數(shù) Function Len(Expression) 返回存儲一個變量所需的字符串的長度和字節(jié)數(shù)。 參數(shù)Expression為源字符串。 用法舉例:Len("ABCdefg文字")結(jié)果為9。 十六、Ltrim、Rtrim和Trim函數(shù) Function LTrim(String) Function RTrim(String) Function Trim(String) LTrim函數(shù)用于去除字符串左邊的空格;RTrim函數(shù)用于去除字符串右邊的空格;Trim函數(shù)用于去除字符串左右兩邊的空格。 參數(shù)String代表源字符串,函數(shù)返回去除空格后的結(jié)果。 這三個函數(shù)都還有另一種形式,即LTrim$、RTrim$和Trim$。加了“$”后多做一步轉(zhuǎn)化為字符串的操作。
|