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