字符串(String)是VB編程中的一個(gè)重要類型。它用于存放字符數(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ì)舍去超過長(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)化為小寫 String 生成字符
Left 取左邊字符 StrReverse 翻轉(zhuǎn)字符串
Len 取字符串長(zhǎng)度 Trim 清除兩邊空格
LTrim 清除右邊空格 UCase 轉(zhuǎn)為大寫
下面詳細(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”。它的返回類型是一般是字符串。我們常用這個(gè)函數(shù)來(lái)取一些無(wú)法直接輸入或輸入困難的字符,如回車符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)行過程中會(huì)報(bào)錯(cuò)。而長(zhǎng)度(Length)超過了原來(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位置開始)經(jīng)過替換后的新字符串。若在源字符串中沒有匹配與查找的子字符串,函數(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)開始,第一個(gè)被查找的子字符串(String2)在源字符串中出現(xiàn)的位置(整型值)。若源字符串(String1)中未含有要查找的子字符串(String2),則返回0。
下面取一個(gè)詳細(xì)的實(shí)例。任務(wù)是在Text1框中的字符串中查找Text2的字符串。希望讀者能通過這個(gè)實(shí)例加深對(duì)該函數(shù)的理解。
首先新建一工程,在Form1上添加兩個(gè)文本框(Text1、Text2)和一個(gè)按鈕(Command1)。
打開代碼窗口,在通用聲明中輸入以下代碼,聲明變量:
Dim i As Integer '記錄查找位置
輸入實(shí)現(xiàn)代碼:
Private Sub Form_Load()
i = 1 '初始開始查找位置
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 '沒找到
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)自源數(shù)組。
參數(shù)SourceArray代表了源數(shù)組,Martch代表一個(gè)欲比較的字符串,Include參數(shù)代表了匹配的模式——True為包括,F(xiàn)alse為不包括。若設(shè)為True,該函數(shù)將源數(shù)組(SourceArray)中凡是含有比較字符串(Match)的元素組成新的一個(gè)數(shù)組并返回;若設(shè)為False,該函數(shù)將源數(shù)組(SourceArray)中凡未是含有比較字符串(Match)的元素組成新的一個(gè)數(shù)組并返回。Include參數(shù)缺省為True。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大小寫均可
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é)果見下表:
表達(dá)式 值 類型
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)化為小寫,Ucase函數(shù)用于將字符串轉(zhuǎn)化為大寫。
參數(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)化為字符串的操作。
聯(lián)系客服