1 VBA中的字符串 2 VBA中處理字符串的函數(shù) 2.1 比較字符串 2.2 轉(zhuǎn)換字符串 2.3 創(chuàng)建字符串 2.4 獲取字符串的長(zhǎng)度 2.5 格式化字符串 2.6 查找字符串 2.7 提取字符/字符串 2.8 刪除空格 2.9 返回字符代碼 2.10 返回?cái)?shù)值代表的相應(yīng)字符 2.11 使用字節(jié)的函數(shù) 2.12 返回?cái)?shù)組的函數(shù) 2.13 連接字符串 2.14 替換字符串 2.15 反向字符串 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 VBA中的字符串 VBA不僅可以處理數(shù)字,,也可以處理文本(字符串)。VBA提供了兩類(lèi)字符串: 一類(lèi)為固定長(zhǎng)度的字符串,,聲明時(shí)包含指字的字符數(shù),。例如,下面的語(yǔ)句 Dim strFixedLong As String*100 聲明字符串變量后,,無(wú)論賦予該變量多少個(gè)字符,,總是只包含100個(gè)字符,但字符串最長(zhǎng)不超過(guò)65526個(gè)字符,,且需要使用Trim函數(shù)去掉字符串中多余的空格,。定長(zhǎng)字符串只有在必要時(shí)才使用。 另一類(lèi)為動(dòng)態(tài)字符串,。例如,,聲明字符串變量Dim strDynamic As String后,可以給該變量任意賦值,,最多可包含20億個(gè)字符,。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 VBA中處理字符串的函數(shù) 2.1 比較字符串 通常,,在VBA中進(jìn)行字符串比較時(shí),會(huì)用到比較運(yùn)算符(如=,、>等),、Like運(yùn)算符和StrComp函數(shù)。此外,,在模塊的開(kāi)頭用Option Compare語(yǔ)句指定比較方式,。 2.1.1 比較運(yùn)算符 可以采用簡(jiǎn)單的邏輯運(yùn)算符進(jìn)行兩個(gè)字符串的比較,即<(小于),、<=(小于或等于),、>(大于)、>=(大于或等于),、=(等于),、<>(不等于)。此外,,還可以使用Like運(yùn)算符進(jìn)行比較,。 2.1.2 StrComp函數(shù) StrComp函數(shù)返回字符串比較的結(jié)果。其語(yǔ)法為: StrComp(string1,string2[,compare]) 其中,,參數(shù)string1和strng2為必需的參數(shù),,可以是任何有效的字符串表達(dá)式。 參數(shù)Compare為可選參數(shù),,如果該參數(shù)為Null,,將發(fā)生錯(cuò)誤。如果參數(shù)Compare設(shè)置為常數(shù)vbUseCompareOption或-1或忽略該參數(shù),,將使用Option Compare語(yǔ)句設(shè)置進(jìn)行比較,;如果忽略該參數(shù)且沒(méi)有設(shè)置Option Compare語(yǔ)句,則按二進(jìn)制進(jìn)行比較,;如果參數(shù)Compare設(shè)置為常數(shù)vbBinaryCompare或0,,則用二進(jìn)制進(jìn)行比較;如果參數(shù)Compare設(shè)置為常數(shù)vbTextCompare或1,,則按文本進(jìn)行比較,;如果參數(shù)Compare設(shè)置為常數(shù)vbDatabaseCompare或2,此時(shí)僅適用于Microsoft Access,,進(jìn)行基于數(shù)據(jù)庫(kù)信息的比較。 StrComp函數(shù)的返回值為:如果String1<String2,,則返回值為-1,;如果String1=String2,則返回值為0,;如果String1>String2,,則返回值為1,;如果String1或String2為Null,則返回值為Null,。 看看下面的示例: Sub testStringCompare() Dim MyStr1 As String, MyStr2 As String, MyComp1, MyComp2, MyComp3, MyComp4 MyStr1 = "ABCD" MyStr2 = "abcd" MyComp1 = StrComp(MyStr1, MyStr2, 1) ' 返回 0 MyComp2 = StrComp(MyStr1, MyStr2, 0) ' 返回 -1 MyComp3 = StrComp(MyStr1, MyStr2) ' 返回 -1 MyComp4 = StrComp(MyStr2, MyStr1) '返回1 MsgBox "StrComp(MyStr1, MyStr2, 1)的結(jié)果為:" & MyComp1 MsgBox "StrComp(MyStr1, MyStr2, 0)的結(jié)果為:" & MyComp2 MsgBox "StrComp(MyStr1, MyStr2)的結(jié)果為:" & MyComp3 MsgBox "StrComp(MyStr2, MyStr1)的結(jié)果為:" & MyComp4 End Sub 示例說(shuō)明:如果StrComp函數(shù)的第三個(gè)參數(shù)值為1,,則以文本比較的方式進(jìn)行字符串比較;如果第三個(gè)參數(shù)值為0或忽略該參數(shù),,則以二進(jìn)制比較的方式進(jìn)行字符串比較,。注意,文本比較的方式不區(qū)分字母大小寫(xiě),,而二進(jìn)制比較方式則區(qū)分大小寫(xiě),。 [編程方法和技巧] 完成一次簡(jiǎn)單的單一比較,如 If UCase(sString1)<UCase(sString2) Then 比使用StrComp函數(shù): If StrComp(sString1,sString2,vbTextCompare)=-1 Then 在性能上要提高30%,,且更容易閱讀和理解,。 2.2 轉(zhuǎn)換字符串 2.2.1 StrConv函數(shù) 使用StrConv函數(shù)來(lái)按指定類(lèi)型轉(zhuǎn)換字符串。其語(yǔ)法為: StrConv(string,conversion,LCID) 其中,,參數(shù)string為要轉(zhuǎn)換的字符串,,參數(shù)conversion為指定轉(zhuǎn)換的類(lèi)型,參數(shù)LCID為可選參數(shù),。 如果將參數(shù)conversion設(shè)置為vbUpperCase或1,,則將字符串轉(zhuǎn)換成大寫(xiě);設(shè)置為vbLowerCase或2,,則將字符串轉(zhuǎn)換成小寫(xiě),;設(shè)置為vbProperCase或3,則將字符串中每個(gè)字的開(kāi)頭字母轉(zhuǎn)換成大寫(xiě),;設(shè)置為vbUnicode或64,,則根據(jù)系統(tǒng)的缺省碼頁(yè)將字符串轉(zhuǎn)換成Unicode;設(shè)置為vbFromUnicode或128,,則將字符串由Unicode轉(zhuǎn)換成系統(tǒng)的缺省碼頁(yè),。 在將ANSI格式的Byte數(shù)組轉(zhuǎn)換成字符串時(shí),應(yīng)使用StrConv函數(shù),;轉(zhuǎn)換Unicode格式的數(shù)組時(shí),,使用賦值語(yǔ)句。下面的例子使用StrConv函數(shù)將Unicode字符串轉(zhuǎn)換成ANSI字符串: Sub testConverseString() Dim i As Long Dim x() As Byte x = StrConv("ABCDEFG", vbFromUnicode) ' 轉(zhuǎn)換字符串,。 For i = 0 To UBound(x) Debug.Print x(i) Next End Sub 下面的例子將句子中每個(gè)詞語(yǔ)的首字母轉(zhuǎn)換為大寫(xiě): Sub testConverseString2() Debug.Print StrConv("my book is this book.", vbProperCase) End Sub 程序運(yùn)行后,,在VBE窗口中的立即窗口中將會(huì)看到上述結(jié)果。 下面的示例演示了如何把一個(gè)字符串轉(zhuǎn)換為字節(jié)數(shù)組,,以便使用在API函數(shù)調(diào)用中: Sub Test() Dim byArray() As Byte Dim sString As String sString = "Some stuff" byArray = StrConv(sString, vbFromUnicode) End Sub StrConv函數(shù)將下面的字符看成是字的分隔符: Null:Chr$(0) 水平制表符:Chr$(9) 換行符:Chr$(10) 垂直制表符:Chr$(11) 換頁(yè)符:Chr$(12) 回車(chē)符:Chr$(13) 空格:Chr$(32) [編程方法和技巧] 在使用API時(shí)該函數(shù)很重要,,很多程序調(diào)用都要求傳遞給它們Unicode字符,或者賦給返回變量Unicode字符,。 2.2.2 Str函數(shù) 將數(shù)值轉(zhuǎn)換成字符串,,即返回代表一個(gè)數(shù)值的字符串,。其語(yǔ)法為: Str(number) 當(dāng)一個(gè)數(shù)字轉(zhuǎn)成字符串時(shí),總會(huì)在前面保留一個(gè)空位來(lái)表示正負(fù),,即字符串的第一位一定是空格或正負(fù)號(hào),。如果參數(shù)number為正,返回的字符串前面包含一空格,。Str函數(shù)將句點(diǎn)(.)作為有效的小數(shù)點(diǎn),。示例如下: MyString = Str(459) ' 返回 " 459" MyString = Str(-459.65) ' 返回 "-459.65" MyString = Str(459.001) ' 返回 " 459.001" [編程方法和技巧] 使用LTrim函數(shù)可刪除Str函數(shù)在返回的字符串開(kāi)頭添加的前導(dǎo)空格。此外,,CStr函數(shù)和Format函數(shù)已經(jīng)取代了Str函數(shù),,CStr函數(shù)不用為正數(shù)的符號(hào)而添加前導(dǎo)空格,F(xiàn)ormat函數(shù)能夠用來(lái)識(shí)別小數(shù)點(diǎn),。 2.2.3 CStr函數(shù) CStr將數(shù)值表達(dá)式轉(zhuǎn)換成String數(shù)據(jù)類(lèi)型,。示例如下: MyDouble = 437.324 ' MyDouble 為 Double 類(lèi)型 MyString = CStr(MyDouble) ' MyString 的內(nèi)容為"437.324" [編程方法和技巧] 傳遞給CStr的未初始化的數(shù)字?jǐn)?shù)據(jù)類(lèi)型返回“0”,傳遞給CStr的未初始化的日期變量返回“0:00:00”,。 2.3 創(chuàng)建字符串 2.3.1 Space函數(shù) 該函數(shù)返回指定數(shù)的空格的字符串,。語(yǔ)法為: Space(number) 其中,參數(shù)number必須,,為字符串中指定的空格數(shù),。 如下例所示: Sub CreateString1() Dim MyString ' 返回 10 個(gè)空格的字符串。 MyString = Space(10) ' 將 10 個(gè)空格插入兩個(gè)字符串中間,。 MyString = "Hello" & Space(10) & "World" End Sub 該函數(shù)可用于在調(diào)用外部DLL時(shí)建立字符串緩沖區(qū),,特別是在調(diào)用Window API時(shí)。此外,,使用該函數(shù)還可以使字符串在特定長(zhǎng)度的緩沖區(qū)左對(duì)齊或右對(duì)齊,。 注意,如果參數(shù)number是負(fù)數(shù),,則會(huì)產(chǎn)生運(yùn)行時(shí)錯(cuò)誤5:“無(wú)效的過(guò)程調(diào)用或參數(shù)”,。 [編程方法和技巧] 可以使用Space函數(shù)添加和清除存儲(chǔ)在定長(zhǎng)字符串中的數(shù)據(jù),例如,,下面的代碼用空格填充一個(gè)定長(zhǎng)字符串: Dim strFixed As String * 32 …… strFixed = Space(Len(strFixed)) 2.3.2 String函數(shù) 該函數(shù)返回重復(fù)的字符或字符串,。其語(yǔ)法為: String(number,character) 其中,參數(shù)number必須,,指定所返回的字符串的長(zhǎng)度,;參數(shù)character必須,指定字符的字符代碼或字符串表達(dá)式,。 例如,,下面使用String函數(shù)生成指定長(zhǎng)度且只含單一字符的字符串。 Sub CreateString2() Dim MyString MyString = String(5, "*") ' 返回 "*****" MyString = String(5, 42) ' 返回 "*****" MyString = String(10, "ABC") ' 返回 "AAAAAAAAAA" End Sub 如果參數(shù)number包含Null,則返回Null,;如果參數(shù)character包含Null,則返回Null,;參數(shù)character可以指定為字符串或者是ANSI字符代碼,,如: strString1=String(128,”=”) ‘用”=”填充 strString2=String(128,0) ‘用Chr$(0)填充 [編程方法和技巧] (1) String函數(shù)在用于創(chuàng)建較長(zhǎng)的“_”,“-”,,或者“=”構(gòu)成的水平線以便給報(bào)表分段時(shí)十分有用,。 (2) 當(dāng)調(diào)用API函數(shù)向緩沖區(qū)寫(xiě)入字符串值時(shí),首先要用String函數(shù)創(chuàng)建一個(gè)長(zhǎng)度合適的字符串變量,,并且用諸如Chr$(0)之類(lèi)的單個(gè)字符來(lái)填充,。 2.4 獲取字符串的長(zhǎng)度 可以使用Len函數(shù)來(lái)確定任何字符串或字符串表達(dá)式的長(zhǎng)度,其語(yǔ)法為: Len(string|varname) 其中,,參數(shù)string為任何有效的字符串表達(dá)式,;參數(shù)varname為任何有效的變量名稱。兩個(gè)參數(shù)必須取一,。 利用LenB函數(shù)可以確定存儲(chǔ)某變量所需的實(shí)際字節(jié)數(shù),。 下面的示例使用Len函數(shù)來(lái)獲取某字符串的長(zhǎng)度(字符數(shù))或某變量的大小(位數(shù))。 Type CustomerRecord ' 定義用戶自定義的數(shù)據(jù)類(lèi)型 ID As Integer ' 將此定義放在常規(guī)模塊中 Name As String * 10 Address As String * 30 End Type Sub GetStrLen() Dim Customer As CustomerRecord ' 聲明變量 Dim MyInt As Integer, MyCur As Currency Dim MyString, MyLen MyString = "Hello World" ' 設(shè)置變量初值 MyLen = Len(MyInt) ' 返回 2 MyLen = Len(Customer) ' 返回 42 MyLen = Len(MyString) ' 返回 11 MyLen = Len(MyCur) ' 返回 8 End Sub 此外,,在需要大量判斷是否為空字符串的代碼中,,使用Len函數(shù)也可以加快代碼執(zhí)行的速度。例如: If strTemp = "" Then '要執(zhí)行的代碼 End If 上面的代碼可以用以下代碼代替: If Len(strTemp) = 0 Then '要執(zhí)行的代碼 End If 注意: (1) 參數(shù)string和參數(shù)varname互不相容,,即只能指定這兩個(gè)參數(shù)中的某一個(gè),,不能同時(shí)指定這兩個(gè)參數(shù)。 (2) 如果參數(shù)string或參數(shù)varname中包含Null,,則Len函數(shù)會(huì)返回Null,。 (3) 在向文件寫(xiě)入某種用戶自定義類(lèi)型數(shù)據(jù)時(shí),Len函數(shù)會(huì)返回?cái)?shù)據(jù)的大小(字符數(shù)),。 (4) LenB函數(shù)返回用戶自定義類(lèi)型數(shù)據(jù)實(shí)際占用的內(nèi)存大小,。 (5) 在對(duì)字節(jié)數(shù)據(jù)或Unicode字符串使用LenB函數(shù)時(shí),LenB函數(shù)返回表示數(shù)據(jù)或字符串的字節(jié)數(shù),。 (6) 不能對(duì)對(duì)象變量使用Len函數(shù),。 (7) 如果參數(shù)varname是一個(gè)數(shù)組,則必須指定一個(gè)有效的下標(biāo),,即Len函數(shù)不能確定數(shù)組中元素的總數(shù)或數(shù)組占用內(nèi)存的大小,。 (8) Len函數(shù)對(duì)Variant類(lèi)型變量的處理和字符串變量一樣,Len函數(shù)返回變量所存儲(chǔ)的實(shí)際字符數(shù),,如下面的代碼: Dim vVar vVar=100 MsgBox Len(vVar) 結(jié)果為3,。 (9) 由于VB本質(zhì)上使用的是Unicode字符串(用兩個(gè)字節(jié)的空間來(lái)存儲(chǔ)一個(gè)字符),因此當(dāng)相同的字符串變量傳遞給Len函數(shù)和LenB函數(shù)時(shí)會(huì)出現(xiàn)不同的返回值,。例如,,對(duì)于一個(gè)包含4個(gè)字符的字符串,,使用Len函數(shù)時(shí)返回值為4,使用LenB函數(shù)則為8,。 (10) 使用強(qiáng)類(lèi)型變量(即強(qiáng)制聲明該變量的類(lèi)型)時(shí),,Len函數(shù)會(huì)返回存儲(chǔ)該變量所需的字節(jié)數(shù)。例如,,長(zhǎng)整型變量的長(zhǎng)度為4,。 下面的示例說(shuō)明了為什么要顯式聲明數(shù)據(jù)類(lèi)型: Sub test() Dim lVar As Long Dim vVar lVar = 10000000 vVar = 10000000 MsgBox LenB(lVar) '返回4 MsgBox LenB(vVar)'返回16 End Sub 很顯然,Variant類(lèi)型變量比強(qiáng)制聲明的類(lèi)型變量要占用更多的內(nèi)存,。
2.5 格式化字符串 可以使用Format函數(shù)規(guī)定輸出的字符串的格式,,其語(yǔ)法為: Format(expression[,format[,firstdayofweek[,firstweekofyear]]]) 其中,參數(shù)expression必須,,為任何有效的表達(dá)式,;其余參數(shù)均可選。參數(shù)format表示所要采用的格式,,參數(shù)firstdayofweek使用常數(shù),,表示一星期的第一天,參數(shù)firstweekofyear使用常數(shù),,表示一年的第一周,。 在參數(shù)format中,使用字符“@”,,表示空格或字符占位符,,如果在輸入的字符串相應(yīng)位置有字符,則顯示該字符,,否則顯示空格,;使用字符“&”,表示空或字符占位符,,如果在輸入的字符串的相應(yīng)位置有字符,,則顯示該字符,否則不顯示,;使用字符“<”,,則將所有字符顯示為小寫(xiě)格式;使用字符“>”,,則將所有字符顯示為大寫(xiě)格式,;使用字符“!”,,強(qiáng)制占位符從左向右填滿,, 滿足默認(rèn)為從右向左。 例如下面的代碼: Dim strOut strOut = Format("8888888", "(@@@)&&&-&&&&") '返回( )888-8888 strOut = Format("8888888", "(&&&)&&&-&&&&") '返回()888-8888 在Format函數(shù)中,還可以同時(shí)格式化普通字符串和空字符串,,只須在指定的格式中用分號(hào)隔開(kāi)兩個(gè)部分,,第一部分用于非空字符串,第二部分用于空字符串,。例如: strOut = Format("6666666", "(@@@)&&&-&&&&;No Phone") '返回( )666-6666 strOut = Format("", "(@@@)&&&-&&&&;No Phone") '返回No Phone 又如,,下面的代碼將字母全部轉(zhuǎn)換為大寫(xiě): Dim strOut strOut = Format("Hello", ">@@@@@") ‘返回HELLO 同理,可以使用“<”將字母全部轉(zhuǎn)換為小寫(xiě),。 Format函數(shù)的簡(jiǎn)要使用規(guī)則: (1) 允許用預(yù)先定義或用戶定義的格式來(lái)建立多種用于輸出字符串、數(shù)字和日期/時(shí)間數(shù)據(jù)的方法,。 (2) 創(chuàng)建用戶定義的數(shù)值格式最多可以有四個(gè)部分,,每個(gè)部分代表一種不同類(lèi)型的數(shù)值,且用分號(hào)分隔,。第一部分在單獨(dú)命名使用時(shí)可用于所有值,,與其它多個(gè)部分一起使用時(shí)只用于正數(shù);第二部分用于負(fù)數(shù),;第三部分用于零值,;第四部分用于Null值。 在參數(shù)format中不必包括所有四部分,,但所用部分的數(shù)目決定了每一個(gè)部分所定義的數(shù)值類(lèi)型:只有一個(gè)部分,,則應(yīng)用于所有數(shù)值;有兩個(gè)部分,,則第一部分應(yīng)用于正數(shù)和零值,,第二部分應(yīng)用于負(fù)數(shù);有三個(gè)部分,,則第一部分用于正數(shù),,第二部分應(yīng)用于負(fù)數(shù),第三部分應(yīng)用于零值,;有四個(gè)部分,,則每部分的使用如前所述。 如果忽略了一個(gè)部分,,則該部分使用與定義正數(shù)的部分一樣的格式,,例如: “#.00;;#,##” 表示負(fù)數(shù)值與正數(shù)值使用同一種格式顯示。 如果參數(shù)含有命名格式,,則只能有一個(gè)部分,。 (3) 字符串值的用戶定義格式有兩個(gè)部分,第一部分可應(yīng)用于所有值,,第二部分只應(yīng)用于Null值或零長(zhǎng)字符串,。 (4) 預(yù)定義的日期和時(shí)間格式如下: General Date 范例: Format("28/02/2007","General Date") 返回: 2007-2-28 Long Date 范例: Format("28/02/2007","Long Date") 返回: 2007年2月28日 Medium Date 范例: Format("28/02/2007","Medium Date") 返回: 07-02-28 Short Date 范例: Format("28/02/2007","Short Date") 返回: 2007-2-28 Long Time 范例: Format("17:30:03","Long Time") 返回: 17:30:03 Medium Time 范例: Format("17:30:03","Medium Time") 返回: 下午 05:30 Short Time 范例: Format("17:30:03","Short Time") 返回: 17:30 (5) 預(yù)定義的數(shù)值格式如下: General Number 范例: Format(123456.0789,"General Number") 返回: 123456.0789 Currency 范例: Format(123456.0789,"Currency") 返回: ¥123,456.08 Fixed 范例: Format(0.2,"Fixed") 返回: 0.20 Standard 范例: Format(123456.0789,"Standard") 返回: 123,456.08 Percent 范例: Format(.7321,"Percent") 返回: 73.21% Scientific 范例: Format(123456.0789,"Scientific") 返回: 1.23E+05 Yes/No 范例1: Format(0,"Yes/No") 返回: No 范例2: Format(23,"Yes/No") 返回: Yes True/False 范例1: Format(0,"True/False") 返回: False 范例2: Format(23,"True/False") 返回: True On/Off 范例1: Format(0,"On/Off") 返回: Off 范例2: Format(23,"On/Off") 返回: On (6) 創(chuàng)建用戶自定義的日期和時(shí)間格式的字符: C 元素:日期 顯示:基于當(dāng)前Windows系統(tǒng)的短日期和短時(shí)間國(guó)際設(shè)置格式的日期或時(shí)間。 范例:Format("28/02/2007 17:30:03","c") 返回:2007-2-28 17:30:03 dddddd 元素:日期 顯示:基于當(dāng)前Windows系統(tǒng)的長(zhǎng)日期國(guó)際設(shè)置格式的完整日期。 范例:Format("28/02/2007","dddddd") 返回:2007年2月28日 / 元素:日期分隔符 范例:Format("28/02/2007","mm-dd-yyyy") 返回:02-28-2007 d 元素:日 顯示:1~31范圍內(nèi)的一個(gè)數(shù)字,,無(wú)前導(dǎo)0,。 范例:Format("02/02/2007","d") 返回:2 dd 元素:日 顯示:01~31范圍內(nèi)的一個(gè)數(shù)字,有前導(dǎo)0,。 范例:Format("02/02/2007","dd") 返回:02 ddd 元素:日 顯示:英文簡(jiǎn)寫(xiě)(Sun~Sat) 范例:Format("02/02/2007","ddd") 返回:Fri dddd 元素:日 顯示:英文全稱(Sunday~Saturday) 范例:Format("02/02/2007","dddd") 返回:Friday ddddd 元素:日期 顯示:基于計(jì)算機(jī)Windows國(guó)際設(shè)置短日期格式的日期,。 范例:Format("02/02/2007","ddddd") 返回:2007-2-2 h 元素:小時(shí) 顯示:0~23范圍內(nèi)的一個(gè)數(shù)字,無(wú)前導(dǎo)0,。 范例:Format("05:08:06","h") 返回:5 hh 元素:小時(shí) 顯示:00~23范圍內(nèi)的一個(gè)數(shù)字,,有前導(dǎo)0。 范例:Format("05:08:06","hh") 返回:05 n 元素:分 顯示:0~59范圍內(nèi)的一個(gè)數(shù)字,,無(wú)前導(dǎo)0,。 范例:Format("05:08:06","n") 返回:8 nn 元素:分 顯示:00~59范圍內(nèi)的一個(gè)數(shù)字,有前導(dǎo)0,。 范例:Format("05:08:06","nn") 返回:08 s 元素:秒 顯示:0~59范圍內(nèi)的一個(gè)數(shù)字,,無(wú)前導(dǎo)0。 范例:Format("05:08:06","s") 返回:6 ss 元素:秒 顯示:00~59范圍內(nèi)的一個(gè)數(shù)字,,有前導(dǎo)0,。 范例:Format("05:08:06","ss") 返回:06 ttttt 元素:時(shí)間 顯示:基于12小時(shí)制的時(shí)間,包含Windows區(qū)域設(shè)置中指定的時(shí)間分隔符和前導(dǎo)0,。 范例:Format("05:08:06","ttttt") 返回:5:08:06 AM/PM 元素:時(shí)間 顯示:用大寫(xiě)的AM和PM表示的12小時(shí)制的時(shí)鐘格式,。 范例:Format("17:08:06","hh:mm:ss AM/PM") 返回:05:08:06 PM am/pm 元素:時(shí)間 顯示:用小寫(xiě)的am和pm表示的12小時(shí)制時(shí)鐘格式。 范例:Format("17:08:06","hh:mm:ss am/pm") 返回:05:08:06 pm A/P 元素:時(shí)間 顯示:12小時(shí)制時(shí)鐘格式,,用大寫(xiě)“A”表示AM,,大寫(xiě)“P”表示PM。 范例:Format("17:08:06","hh:mm:ss A/P") 返回:05:08:06 P a/p 元素:時(shí)間 顯示:12小時(shí)制時(shí)鐘格式,,用小寫(xiě)“a”表示am,,小寫(xiě)“p”表示pm。 范例:Format("17:08:06","hh:mm:ss a/p") 返回:05:08:06 p : 元素:時(shí)間分隔符 顯示:時(shí)間格式 范例:Format("17:08:06","hh:mm:ss") 返回:17:08:06 w 元素:星期幾 顯示:1~7范圍內(nèi)的一個(gè)數(shù)字(1~7分別表示星期天到星期六),。 范例:Format("02/02/2007","w") 返回:6 ww 元素:周 顯示:1~54范圍內(nèi)的一個(gè)數(shù)字,。 范例:Format("02/02/2007","ww") 返回:5 m 元素:月 顯示:1~12范圍內(nèi)的一個(gè)數(shù)字,無(wú)前導(dǎo)0,。 范例:Format("02/02/2007","m") 返回:2 mm 元素:月 顯示:01~12范圍內(nèi)的一個(gè)數(shù)字,,有前導(dǎo)0。 范例:Format("02/02/2007","mm") 返回:02 mmm 元素:月 顯示:英文月份簡(jiǎn)寫(xiě)(Jan~Dec) 范例:Format("02/02/2007","mmm") 返回:Feb mmmm 元素:月 顯示:英文月份全稱(January~December) 范例:Format("02/02/2007","mmmm") 返回:February q 元素:季度 顯示:1~4范圍內(nèi)的一個(gè)數(shù)字 范例:Format("02/02/2007","q") 返回:1 y 元素:一年中的某天 顯示:1~366范圍內(nèi)的一個(gè)數(shù)字,。 范例:Format("02/02/2007","y") 返回:33 yy 元素:年 顯示:00~99范圍內(nèi)的一個(gè)兩位數(shù)字,。 范例:Format("02/02/2007","yy") 返回:07 yyyy 元素:年 顯示:100~9999范圍內(nèi)的一個(gè)四位數(shù)字。 范例:Format("02/02/2007","yyyy") 返回:2007 (7)用于創(chuàng)建用戶自定義數(shù)字格式的字符 0 說(shuō)明:數(shù)字占位符,。如果參數(shù)expression所代表的數(shù)值在相應(yīng)的0位置上有一個(gè)數(shù)字,,則顯示這個(gè)數(shù)字,,否則顯示0。所指定的小數(shù)點(diǎn)后的位數(shù),,使數(shù)值舍入為給定的小數(shù)位數(shù),,但不影響小數(shù)點(diǎn)左邊的數(shù)字位數(shù)。 范例1:Format(23.675,"00.0000") 返回:23.6750 范例2:Format(23.675,"00.00") 返回:23.68 范例3:Format(2345,"00000") 返回:02345 范例4:Format(2345,"00.00") 返回:2345.00 # 說(shuō)明:數(shù)字占位符,。如果參數(shù)expression所代表的數(shù)值在相應(yīng)的#位置上有一個(gè)數(shù)字,,則顯示這個(gè)數(shù)字,否則什么也不顯示,。 范例1:Format(23.675,"##.##") 返回:23.68 范例2:Format(23.675,"##.####") 返回:23.675 范例3:Format(12345.25,"#,###.##") 返回:12,345.25 . 說(shuō)明:小數(shù)點(diǎn)占位符,。小數(shù)點(diǎn)占位符實(shí)際顯示的字符由本機(jī)Windows系統(tǒng)國(guó)際設(shè)置格式?jīng)Q定。 % 說(shuō)明:百分?jǐn)?shù)占位符,。首先將參數(shù)expression所代表的數(shù)值乘以100,,然后把它作為百分?jǐn)?shù)顯示。 范例:Format(0.25,"##.00%") 返回:25.00% ,, 說(shuō)明:千位分隔符。實(shí)際顯示的字符由本機(jī)Windows系統(tǒng)國(guó)際設(shè)置格式?jīng)Q定,。在格式定義中只需要給出一個(gè)千位分隔符,。 范例:Format(1000000,"#,###") 返回:1,000,000 E-E+ e-e+ 說(shuō)明:科學(xué)計(jì)數(shù)法格式。如果格式表達(dá)式在E-,、E+或e-,、e+的右邊至少有一個(gè)數(shù)字占位符(0或#),數(shù)字就以科學(xué)計(jì)數(shù)法格式顯示數(shù)字,,參數(shù)Format中所用的字母E或e在該數(shù)字和它的指數(shù)之間顯示,。右邊的數(shù)字占位符數(shù)目決定了要在指數(shù)中顯示的位數(shù)。使用E-或e-可以在負(fù)指數(shù)前插入一個(gè)減號(hào),,使用E+或e+可以在正指數(shù)前插入一個(gè)正號(hào),。 范例:Format(1.09837555,"######E-###") 返回:109838E-5 -+$ 說(shuō)明:顯示一個(gè)直接量字符。 范例:Format(2345.25,"$#,###.##") 返回:$2,345.25 \ 說(shuō)明:反斜杠后的字符以直接量字符顯示,??梢杂梅葱备軐⒛硞€(gè)特定格式的字符以直接量字符顯示。 范例:Format(0.25,"##.##\%") 返回:.25% (8) 用于創(chuàng)建用戶自定義字符串格式的字符 @ 說(shuō)明:字符占位符,。如果expression在相應(yīng)的@位置上有一個(gè)字符,,就顯示這個(gè)字符,否則顯示一個(gè)空格,。 范例:Format("VBA","\*@\*@@@@@") 返回:* * VBA & 說(shuō)明:字符占位符,。如果expression在相應(yīng)的&位置上有一個(gè)字符,就顯示這個(gè)字符,,否則什么也不顯示,。 范例:Format("VBA","\*&&\*&&&&") 返回:**VBA < 說(shuō)明:用小寫(xiě)形式顯示所有字符,。 范例:Format("VBA","<") 返回:vba > 說(shuō)明:用大寫(xiě)形式顯示所有字符。 范例:Format("vba",">") 返回:VBA ,! 說(shuō)明:從左向右處理占位符(缺省情況為從右向左處理占位符),。 [編程方法和技巧] (1) 使用沒(méi)有格式定義的Format函數(shù)格式化數(shù)字比使用Str函數(shù)格式化數(shù)字更好。Format函數(shù)與Str函數(shù)不同,,它會(huì)把正數(shù)中一般保留用于表示符號(hào)的前導(dǎo)空格清除掉,。 (2) 可以使用Format函數(shù)以1000為單位對(duì)數(shù)字進(jìn)行標(biāo)度,做法是在語(yǔ)句中小數(shù)點(diǎn)的左邊用一個(gè)千位分隔符(,,)表示標(biāo)度數(shù)字的一個(gè)千位,;可以使用多個(gè)千位分隔符。例如: Format(1000000,"##0,.") 返回:1000. Format(1000000,"##0,,.") 返回:1.
2.6 查找字符串 2.6.1 InStr函數(shù) 可使用InStr函數(shù)返回一字符串在另一字符串中的位置,,因此,,也可以使用該函數(shù)確定一個(gè)字符串中是否包含有另一個(gè)字符串。其語(yǔ)法為: InStr([Start,]string1,string2[,compare]) 其中,,參數(shù)Start為可選參數(shù),,設(shè)置查找的起點(diǎn),如果省略,,則從第一個(gè)字符的位置開(kāi)始查找,,當(dāng)指定了參數(shù)Compare時(shí),則要指定此參數(shù),。參數(shù)string1為被查找的字符串,,參數(shù)string2為要查找的字符串,這兩個(gè)參數(shù)都是必需的,。 如果在String1中沒(méi)有找到String2,,返回0;如果找到String2,,則返回String2第一個(gè)出現(xiàn)的首字符位置(即1到String1的長(zhǎng)度),;如果String2的長(zhǎng)度為零,返回Start,。 可看看下面的示例: Sub test() Dim SearchString, SearchChar, MyPos SearchString = "XXpXXpXXPXXP" '被搜索的字符串 SearchChar = "P" '要查找字符串 "P" '從第四個(gè)字符開(kāi)始,,以文本比較的方式找起,返回值為 6(小寫(xiě) p) '小寫(xiě) p 和大寫(xiě) P 在文本比較下是一樣的 MyPos = InStr(4, SearchString, SearchChar, 1) Debug.Print MyPos '從第一個(gè)字符開(kāi)使,,以二進(jìn)制比較的方式找起,,返回值為 9(大寫(xiě) P) '小寫(xiě) p 和大寫(xiě) P 在二進(jìn)制比較下是不一樣的 MyPos = InStr(1, SearchString, SearchChar, 0) Debug.Print MyPos '缺省的比對(duì)方式為二進(jìn)制比較(最后一個(gè)參數(shù)可省略) MyPos = InStr(SearchString, SearchChar) '返回 9 Debug.Print MyPos MyPos = InStr(1, SearchString, "W") '返回 0 Debug.Print MyPos End Sub 2.6.2 InStrRev函數(shù) 也可以使用InStrRev函數(shù)返回一個(gè)字符串在另一個(gè)字符串中出現(xiàn)的位置,與InStr函數(shù)不同的是,,從字符串的末尾算起,。其語(yǔ)法為: InStrRev(String1,String2[,[Start[,compare]) 參數(shù)String1為被查找的字符串,,參數(shù)String2為要查找的字符串,,這兩個(gè)參數(shù)都是必需的。參數(shù)Start為可選參數(shù),,設(shè)置每次查找開(kāi)始的位置,,若忽略則使用-1,表示從上一個(gè)字符位置開(kāi)始查找,。參數(shù)Compare為可選參數(shù),,表示所使用的比較方法,如果忽略則執(zhí)行二進(jìn)制比較,。 下面的示例使用了InStr函數(shù)和InStrRev函數(shù),,相應(yīng)的結(jié)果不同: Sub test() Dim myString As String Dim sSearch As String myString = "I like the functionality that InsStrRev gives" sSearch = "th" Debug.Print InStr(myString, sSearch) '返回8 Debug.Print InStrRev(myString, sSearch) '返回26 End Sub
- - - - - - - - - - - - - - - - - - - - - - - 2.7 提取字符/字符串 2.7.1 Left函數(shù) Left函數(shù)可以從字符串的左邊開(kāi)始提取字符或指定長(zhǎng)度的字符串,即返回包含字符串中從左邊算起指定數(shù)量的字符,。其語(yǔ)法為: Left(String,CharNum) 其中,,如果參數(shù)String包含Null,則返回Null,;如果參數(shù)CharNum的值大于或等于String的字符數(shù),,則返回整個(gè)字符串。 例如,,下面的代碼返回指定字符串的前兩個(gè)字符: strLeft=Left(“This is a pig.”,,2) Left函數(shù)與InStr函數(shù)結(jié)合,返回指定字符串的第一個(gè)詞,,例如下面的代碼: str = "This is a pig." FirstWord = Left(str, InStr(str, " ") - 1) 2.7.2 Right函數(shù) 與Left函數(shù)不同的是,Right函數(shù)從字符串的右邊開(kāi)始提取字符或指定長(zhǎng)度的字符串,,即返回包含字符串中從右邊起指定數(shù)量的字符,。其語(yǔ)法為: Right(String,CharNum) 例如: AnyString = "Hello World" ' 定義字符串 MyStr = Right(AnyString, 1) ' 返回 "d" MyStr = Right(AnyString, 6) ' 返回 " World" MyStr = Right(AnyString, 20) ' 返回 "Hello World" 如果存放文件名的字符串中沒(méi)有反斜杠(\),下面的代碼將反斜杠(\)添加到該字符串中: If Right(strFileName,1) <> “” Then strFileName=strFileName & “\” End If 下面的函數(shù)假設(shè)傳遞給它的參數(shù)或者是文件名,,或者是包含完整路徑的文件名,,從字符串的末尾開(kāi)始返回文件名。 Private Function ParseFileName(strFullPath As String) Dim lngPos As Long, lngStart As Long Dim strFilename As String lngStart = 1 Do lngPos = InStr(lngStart, strFullPath, "\") If lngPos = 0 Then strFilename = Right(strFullPath, Len(strFullPath) - lngStart + 1) Else lngStart = lngPos + 1 End If Loop While lngPos > 0 ParseFileName = strFilename End Function 2.7.3 Mid函數(shù) Mid函數(shù)可以從字符串中提取任何指定的子字符串,,返回包含字符串中指定數(shù)量的字符的字符串,。其語(yǔ)法為: Mid(String,Start[,Len]) 其中,,如果參數(shù)String包含Null,,則返回Null;如果參數(shù)Start超過(guò)了String的字符數(shù),,則返回零長(zhǎng)度字符串(“”),;如果參數(shù)Len省略或超過(guò)了文本的字符數(shù),則返回字符串從Start到最后的所有字符,。 例如,,下面的代碼: Str=Mid(“This is a pig.”,6,2) 將返回文本“is”。 下面的代碼: MyString = "Mid Function Demo" '建立一個(gè)字符串 FirstWord = Mid(MyString, 1, 3) '返回 "Mid" LastWord = Mid(MyString, 14, 4) '返回 "Demo" MidWords = Mid(MyString, 5) '返回 "Funcion Demo" Mid函數(shù)常用于在字符串中循環(huán),,例如,,下面的代碼將逐個(gè)輸出字符: Dim str As String Dim i As Integer Str=”Print Out each Character” For i=1 to Len(str) Debug.Print Mid(str,i,1) Next i 2.7.4 Mid語(yǔ)句 Mid語(yǔ)句可以用另一個(gè)字符串中的字符替換某字符串中指定數(shù)量的字符,。其語(yǔ)法為: Mid(Stringvar,Start[,Len])=string 其中,參數(shù)Stringvar代表為要被更改的字符串,;參數(shù)Start表示被替換的字符開(kāi)頭位置;參數(shù)Len表示被替換的字符數(shù),,若省略則全部使用string,;參數(shù)string表示進(jìn)行替換的字符串。 被替換的字符數(shù)量總小于或等于Stringvar的字符數(shù),;如果string的數(shù)量大于Len所指定的數(shù)量,,則只取string的部分字符。示例如下: MyString = "The dog jumps" ' 設(shè)置字符串初值 Mid(MyString, 5, 3) = "fox" ' MyString = "The fox jumps" Mid(MyString, 5) = "cow" ' MyString = "The cow jumps" Mid(MyString, 5) = "cow jumped over" ' MyString = "The cow jumpe" Mid(MyString, 5, 3) = "duck" ' MyString = "The duc jumpe" - - - - - - - - - - - - - - - - - - - - - - -
2.8 刪除空格 LTrim函數(shù)刪除字符串前面的空格,; RTrim函數(shù)刪除字符串后面的空格,; Trim函數(shù)刪除兩頭的空格。 示例如下: MyString = " <-Trim-> " ' 設(shè)置字符串初值 TrimString = LTrim(MyString) ' TrimString = "<-Trim-> " TrimString = RTrim(MyString) ' TrimString = " <-Trim->" TrimString = LTrim(RTrim(MyString)) ' TrimString = "<-Trim->" ' 只使用 Trim 函數(shù)也同樣將兩頭空格去除 TrimString = Trim(MyString) ' TrimString = "<-Trim->" - - - - - - - - - - - - - - - - - - - - - - -
2.9 返回字符代碼 Asc函數(shù)返回指定字符串表達(dá)式中第一個(gè)字符的字符代碼,。示例如下: MyNumber = Asc("A") ' 返回 65 MyNumber = Asc("a") ' 返回 97 MyNumber = Asc("Apple") ' 返回 65 [編程方法和技巧] (1) 在數(shù)據(jù)驗(yàn)證中用Asc來(lái)決定一些條件,,如第一個(gè)字符是大寫(xiě)還是小寫(xiě)、是字母還是數(shù)字,。 Private Sub CommandButton1_Click() Dim sTest As String Dim iChar As Integer sTest = TextBox1.Text If Len(sTest) > 0 Then iChar = Asc(sTest) If iChar >= 65 And iChar <= 90 Then MsgBox "第一個(gè)字符是大寫(xiě)" ElseIf iChar >= 97 And iChar <= 122 Then MsgBox "第一個(gè)字符是小寫(xiě)" Else MsgBox "第一個(gè)字符不是字母" End If Else MsgBox "請(qǐng)?jiān)谖谋究蛑休斎? End If End Sub (2) 用Asc函數(shù)和Chr函數(shù)來(lái)創(chuàng)建基本加密的方法。 Private Sub CommandButton2_Click() Dim MyName As String, MyEncryptedString As String Dim MyDecryptedString As String Dim i As Integer MyName = "fanjy" For i = 1 To Len(MyName) MyEncryptedString = MyEncryptedString & Chr(Asc(Mid(MyName, i, 1)) + 25) Next i MsgBox "您好!我的名字是" & MyEncryptedString For i = 1 To Len(MyName) MyDecryptedString = MyDecryptedString & Chr(Asc(Mid(MyEncryptedString, i, 1)) - 25) Next i MsgBox "您好!我的名字是" & MyDecryptedString End Sub
- - - - - - - - - - - - - - - - - - - - - - - 2.10 返回?cái)?shù)值代表的相應(yīng)字符 Chr函數(shù)返回指定字符碼所代表的字符,,其語(yǔ)法為: Chr(charcode) 其中參數(shù)charcode代表字符碼,一般為0~255,。例如: MyChar = Chr(65) ' 返回 A MyChar = Chr(97) ' 返回 a MyChar = Chr(62) ' 返回 > MyChar = Chr(37) ' 返回 % [編程方法和技巧] (1) 使用Chr(34)將引號(hào)嵌入字符串,,如 Chr(34) & sString & Chr(34) (2) 下面列出了在調(diào)用Chr函數(shù)時(shí)比較常用的字符代碼: 代碼 值 描述 0 Null 相當(dāng)于vbNullChar常數(shù) 8 BS 相當(dāng)于vbBack常數(shù) 9 TAB 相當(dāng)于vbTab常數(shù) 10 CR 相當(dāng)于vbCr和vbCrLf常數(shù) 13 LF 相當(dāng)于vbLf和vbCrLf常數(shù) 34 “” 引號(hào) - - - - - - - - - - - - - - - - - - - - - - - 2.11 使用字節(jié)的函數(shù) VBA中返回字符串的函數(shù)有兩種格式,,一種以$結(jié)尾,返回字符串,,不需要進(jìn)行類(lèi)型轉(zhuǎn)換,,所以速度較快,,但如果輸入值是包含Null的Viarant,則會(huì)發(fā)生運(yùn)行錯(cuò)誤,;一種沒(méi)有$,,返回Viarant數(shù)據(jù)類(lèi)型,如果輸入值是包含Null的Viarant,,則返回Null,。因而,如果要使得程序運(yùn)行速度快,,則使用帶有$的函數(shù)且要避免向這些函數(shù)傳遞空值,。 - - - - - - - - - - - - - - - - - - - - - - - 2.12 返回?cái)?shù)組的函數(shù) 2.12.1 Filter函數(shù) Filter函數(shù)返回一個(gè)下標(biāo)從零開(kāi)始的數(shù)組,該數(shù)組包含基于指定篩選條件的一個(gè)字符串?dāng)?shù)組的子集,。其語(yǔ)法為: Filter(sourcearray,match[,include[,compare]]) 其中,,參數(shù)sourcearray必需,是要執(zhí)行搜索的一維字符串?dāng)?shù)組,;參數(shù)match必需,,是要搜索的字符串;參數(shù)include可選,,Boolean值,,表示返回子串包含還是不包含match字符串,如果include為T(mén)rue,,返回包含match子字符串的數(shù)組子集,,如果include為False,返回不包含match子字符串的數(shù)組子集,;參數(shù)compare可選,,表示所使用的字符串比較類(lèi)型,其設(shè)置值為:-1(常數(shù)為vbUseCompareOption)表示使用Option Compare語(yǔ)句的設(shè)置值來(lái)執(zhí)行比較,;0(常數(shù)為vbBinaryCompare)表示執(zhí)行二進(jìn)制比較;1(常數(shù)為vbTextCompare)表示執(zhí)行文字比較,;2(常數(shù)為vbDatabaseCompare)只用于Microsoft Access,,表示基于數(shù)據(jù)庫(kù)信息來(lái)執(zhí)行比較。 如果在sourcearray中沒(méi)有發(fā)現(xiàn)與match相匹配的值,,F(xiàn)ilter函數(shù)返回一個(gè)空數(shù)組,;如果sourcearray是Null或不是一個(gè)一維數(shù)組,則產(chǎn)生錯(cuò)誤,。 Filter函數(shù)所返回的數(shù)組,,其元素?cái)?shù)是所找到的匹配項(xiàng)目數(shù)。 [編程方法和技巧] (1) Filter函數(shù)也可以過(guò)濾數(shù)字值,。此時(shí),,應(yīng)指定Variant類(lèi)型的字符串sourcearray,,并用數(shù)字值給數(shù)組賦值。同時(shí),,也可以將字符串,、Variant、Long或Integer數(shù)據(jù)傳遞給match,。但應(yīng)注意,,返回的字符串表現(xiàn)為被過(guò)濾數(shù)字的字符串的形式。例如: Sub test() Dim varSource As Variant, varResult As Variant Dim strMatch As String, i strMatch = CStr(2) varSource = Array(10, 20, 30, 21, 22, 32) varResult = Filter(varSource, strMatch, True, vbBinaryCompare) For Each i In varResult Debug.Print i Next End Sub 將返回20,,21,,22,32 (2) Filter函數(shù)可以和Dictionary對(duì)象很好地配合使用,??梢园袲ictionary對(duì)象產(chǎn)生的Key值作為一種過(guò)濾Dictionary對(duì)象成員的快速方法傳遞給Filter函數(shù),如: Sub test() Dim i As Integer Dim sKeys() As Variant Dim sFiltered() As String Dim sMatch As String Dim blnSwitch As Boolean Dim oDict As Dictionary Set oDict = New Dictionary oDict.Add "Microsoft", "One Microsoft Way" oDict.Add "AnyMicro Inc", "31 Harbour Drive" oDict.Add "Landbor Data", "The Plaza" oDict.Add "Micron Co.", "999 Pleasant View" sKeys = oDict.Keys sMatch = "micro" blnSwitch = True '尋找包含字符串macro(不區(qū)分大小寫(xiě))的所有鍵 sFiltered() = Filter(sKeys, sMatch, blnSwitch, vbTextCompare) For i = 1 To UBound(sFiltered) Debug.Print sFiltered(i) & "," & oDict.Item(sFiltered(i)) Next i End Sub 2.12.2 Split函數(shù) Split函數(shù)返回一個(gè)下標(biāo)從零開(kāi)始的一維數(shù)組,,包含指定數(shù)目的子字符串,。其語(yǔ)法為: Split(expression[,delimiter[,limit[,compare]]]) 其中,參數(shù)expression必需,,表示包含子字符串和分隔符的字符串,,若expression是一個(gè)長(zhǎng)度為零的字符串(“”),該函數(shù)則返回一個(gè)沒(méi)有元素和數(shù)據(jù)的空數(shù)組,;參數(shù)delimiter用于標(biāo)識(shí)子字符串邊界的字符串字符,,若忽略則使用空格(“ “)作為分隔符,若是一個(gè)長(zhǎng)度為零的字符串則返回僅包含一個(gè)元素的數(shù)組,,該元素是expression所表示的字符串,;參數(shù)limit表示要返回的子字符串?dāng)?shù),-1表示返回所有的子字符串,;參數(shù)compare表示判別子字符串時(shí)使用的比較方式,,其值與Filter函數(shù)的設(shè)置值相同。 - - - - - - - - - - - - - - - - - - - - - - - 2.13 連接字符串 Join函數(shù)返回連接某數(shù)組中的多個(gè)子字符串而組成的字符串,,即將數(shù)組中的字符串連接起來(lái),。其語(yǔ)法為: Join(sourcearray[,delimiter]) 其中,,參數(shù)sourcearray必需,,是包含被連接子字符串的一維數(shù)組;參數(shù)delimiter可選,,代表在所返回的字符串中用于分隔子字符串的字符,,若忽略則使用空(“ ”)來(lái)分隔,若為零長(zhǎng)字符串(“”),則所有項(xiàng)目都連接在一起,,中間沒(méi)有分隔符,。 - - - - - - - - - - - - - - - - - - - - - - - 2.14 替換字符串 Replace函數(shù)返回一個(gè)被替換了的字符串,該字符串中指定的子字符串已被替換成另一個(gè)子字符串,,并且替換指定次數(shù),。其語(yǔ)法為: Replace(expression,find,replace[,start[,count[,compare]]]) 其中,參數(shù)expression必需,,表示所要替換的子字符串,;參數(shù)find必需,表示要搜索到的子字符串,;參數(shù)replace必需,,表示用來(lái)替換的子字符串;參數(shù)start表示開(kāi)始搜索的位置,,若忽略,,則從1開(kāi)始;參數(shù)count表示進(jìn)行替換的次數(shù),,缺省值是-1,,表示進(jìn)行所有可能的替換;參數(shù)compare表示判別子字符串時(shí)所用的比較方式,,與Filter函數(shù)的設(shè)置值相同,。 如果expression的長(zhǎng)度為零,Replace返回零長(zhǎng)度字符串(“”),;如果expression為Null,,則返回錯(cuò)誤;如果find的長(zhǎng)度為零,,則返回expression的副本,;如果replace的長(zhǎng)度為零,則返回刪除了所有出現(xiàn)find的字符串的副本,;如果start的值大于expression的長(zhǎng)度,,則返回長(zhǎng)度為零的字符串;如果count為0,,則返回expression的副本,。 Replace函數(shù)返回的字符串是從參數(shù)start所指定的位置開(kāi)始到expression結(jié)尾已經(jīng)進(jìn)行過(guò)替換的字符串。 注意: (1) 如果沒(méi)有使用參數(shù)count,,那么當(dāng)替換較短字符串時(shí)就要注意,防止形成一個(gè)不相關(guān)的字符,。 (2) 如果start值大于1,,返回的字符串將從start開(kāi)始,而不是從原有字符串的第一個(gè)字符開(kāi)始,。 - - - - - - - - - - - - - - - - - - - - - - - 2.15 反向字符串 StrReverse函數(shù)返回與指定字符串順序相反的字符串,,其語(yǔ)法為: StrReverse(expression) 其中,,參數(shù)expression是一個(gè)字符串,應(yīng)用StrReverse函數(shù)后將返回與該字符串順序相反的字符串,。如果expression是一個(gè)長(zhǎng)度為零的字符串(“”),,則返回一個(gè)長(zhǎng)度為零的字符串;如果expression為Null,,則產(chǎn)生一個(gè)錯(cuò)誤,。
|