久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

VBA字符串處理

 閑讀古書(shū) 2011-05-04
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ò)誤,。
 
 
2樓
發(fā)表于 2007-11-19 10:22 |只看該作者

使用字符串函數(shù)

不同的類(lèi)中都定義有字符串函數(shù)。這些類(lèi)包括 Microsoft.VisualBasic.Strings 類(lèi)和 System.String 類(lèi),。

使用 Microsoft.VisualBasic.Strings 類(lèi)中的字符串函數(shù)

下列函數(shù)是 Microsoft.VisualBasic.Strings 類(lèi)中定義的字符串函數(shù),。

注意:要使用字符串函數(shù),請(qǐng)通過(guò)在源代碼開(kāi)始處添加以下代碼將命名空間 Microsoft.VisualBasic.Strings 導(dǎo)入到項(xiàng)目中:
Imports Microsoft.VisualBasic.Strings
                        
AscAscW

Asc 函數(shù)和 AscW 函數(shù)返回一個(gè)整數(shù)值,,表示與指定的字符相對(duì)應(yīng)的字符代碼,。這兩個(gè)函數(shù)接受任何有效的字符表達(dá)式或字符串表達(dá)式作為參數(shù)。當(dāng)字符串是輸入?yún)?shù)時(shí),,則僅輸入字符串的第一個(gè)字符,。當(dāng)字符串不包含任何字符時(shí),將出現(xiàn) ArgumentException 錯(cuò)誤,。Asc 返回輸入字符的代碼數(shù)據(jù)點(diǎn)或字符代碼,。對(duì)于單字節(jié)字符集 (SBCS) 值,返回值可以是 0 到 255 之間的數(shù)字,。對(duì)于雙字節(jié)字符集 (DBCS) 值,,返回值可以是 -32768 到 32767 之間的數(shù)字。AscW 為輸入字符返回 0 到 65535 之間的 Unicode 代碼數(shù)據(jù)點(diǎn),。

示例:
Dim MyInt As Integer
                        MyInt = Asc("A")   ' MyInt is set to 65.
                        MyInt = Asc("a")   ' MyInt is set to 97.
                        MyInt = Asc("Apple")   ' MyInt is set to 65.
                        
ChrChrW

Chr 函數(shù)和 ChrW 函數(shù)返回與指定的字符代碼相關(guān)聯(lián)的字符,。當(dāng) CharCode 超出 -32768 到 65535 的范圍時(shí),將出現(xiàn) ArgumentException 錯(cuò)誤,。

示例:

本示例使用 Chr 函數(shù)返回與指定的字符代碼相關(guān)聯(lián)的字符,。
Dim MyChar As Char
                        MyChar = Chr(65)   ' Returns "A".
                        MyChar = Chr(97)   ' Returns "a".
                        MyChar = Chr(62)   ' Returns ">".
                        MyChar = Chr(37)   ' Returns "%".
                        
GetChar

GetChar 函數(shù)返回一個(gè) Char 值,表示指定字符串的指定索引中的字符,。當(dāng)索引小于 1 或大于指定輸入?yún)?shù)中最后一個(gè)字符的索引時(shí),,將出現(xiàn) ArgumentException 錯(cuò)誤。

示例:

本示例顯示了如何使用 GetChar 函數(shù)從字符串的指定索引中返回字符,。
Dim myString As String = "ABCDE"
                        Dim myChar As Char
                        myChar = GetChar(myString, 4)   ' myChar = "D"
                        
InStr

InStr 函數(shù)返回一個(gè)整數(shù),,指定一個(gè)字符串在另一個(gè)字符串中首次出現(xiàn)的起始位置。

示例:

以下示例使用 InStr 函數(shù)返回一個(gè)字符串在另一個(gè)字符串中首次出現(xiàn)的位置:
Dim SearchString, SearchChar As String
                        Dim MyPos As Integer
                        SearchString ="XXpXXpXXPXXP"   ' String to search in.
                        SearchChar = "P"   ' Search for "P".
                        ' A textual comparison starting at position 4. Returns 6.
                        MyPos = InStr(4, SearchString, SearchChar, CompareMethod.Text)
                        
Join

Join 函數(shù)返回一個(gè)字符串,,該字符串是通過(guò)連接數(shù)組中包含的子字符串創(chuàng)建的,。包含必須連接的子字符串的一維數(shù)組將作為參數(shù)傳遞給 Join 函數(shù)。該函數(shù)使用 Delimiter、String 作為可選參數(shù)來(lái)分隔返回的字符串中的子字符串,。當(dāng)省略 Delimiter 時(shí),,將使用空格(“ ”)作為子字符串之間的分隔符。當(dāng) Delimiter 是零長(zhǎng)度字符串 ("") 時(shí),,數(shù)組中的子字符串將不使用分隔符,,而是直接相連。

示例:

以下示例顯示了如何使用 Join 函數(shù):
Dim myItem(2) As String
                        Dim myShoppingList As String
                        myItem(0) = "Pickle"
                        myItem(1) = "Pineapple"
                        myItem(2) = "Papaya"
                        ' Returns "Pickle, Pineapple, Papaya"
                        myShoppingList = Join(myItem, ", ")
                        
LCase

LCase 函數(shù)返回已經(jīng)轉(zhuǎn)換為小寫(xiě)的字符串或字符,。只有大寫(xiě)字母被轉(zhuǎn)換為小寫(xiě),。所有小寫(xiě)字母和非字母字符均保持不變。

示例:

以下示例使用 LCase 函數(shù)返回字符串的小寫(xiě)形式:
Dim UpperCase, LowerCase As String
                        Uppercase = "Hello WORLD 1234"   ' String to convert.
                        Lowercase = LCase(UpperCase)   ' Returns "hello world 1234".
                        
LTrim,、RTrimTrim

這些函數(shù)會(huì)返回一個(gè)包含指定字符串的副本的字符串,。在使用 LTrim 時(shí),沒(méi)有起始空格,。在使用 RTrim 時(shí),,沒(méi)有尾隨空格。在使用 Trim 時(shí),,既沒(méi)有起始空格也沒(méi)有尾隨空格,。

示例:

以下示例使用 LTrim 函數(shù)刪除字符串變量中的起始空格,使用 RTrim 函數(shù)刪除字符串變量中的尾隨空格,,以及使用 Trim 函數(shù)刪除字符串變量中的起始空格和尾隨空格:
Dim MyString, TrimString As String
                        MyString = "  <-Trim->  "   ' Initializes string.
                        TrimString = LTrim(MyString)   ' TrimString = "<-Trim->  ".
                        TrimString = RTrim(MyString)   ' TrimString = "  <-Trim->".
                        TrimString = LTrim(RTrim(MyString))   ' TrimString = "<-Trim->".
                        ' Using the Trim function alone achieves the same result.
                        TrimString = Trim(MyString)   ' TrimString = "<-Trim->".
                        
Replace

Replace 函數(shù)返回一個(gè)字符串,,其中指定的子字符串按指定的次數(shù)替換為另一個(gè)子字符串。Replace 函數(shù)的返回值是一個(gè)字符串,,該字符串在 Start 參數(shù)指定的位置開(kāi)始,,然后在指定字符串的末尾以 Find 參數(shù)和 Replace 參數(shù)中的值所指定的替換內(nèi)容結(jié)束。

示例:

本示例演示了 Replace 函數(shù):
Dim myString As String = "Shopping List"
                        Dim aString As String
                        ' Returns "Shipping List".
                        aString = Replace(myString, "o", "i")
                        
StrComp

StrComp 函數(shù)返回 –1,、0 或 1,。這將基于字符串比較的結(jié)果。字符串將從第一個(gè)字符開(kāi)始按字母數(shù)字順序排列的值進(jìn)行比較,。

示例:

以下示例使用 StrComp 函數(shù)返回字符串比較的結(jié)果,。如果省略第三個(gè)參數(shù),則使用選項(xiàng)比較語(yǔ)句或項(xiàng)目默認(rèn)設(shè)置中定義的比較類(lèi)型,。
Dim MyStr1, MyStr2 As String
                        Dim MyComp As Integer
                        MyStr1 = "ABCD"
                        MyStr2 = "abcd"   ' Defines variables.
                        ' The two strings sort equally. Returns 0.
                        MyComp = StrComp(MyStr1, MyStr2, CompareMethod.Text)
                        ' MyStr1 sorts after MyStr2. Returns -1.
                        MyComp = StrComp(MyStr1, MyStr2, CompareMethod.Binary)
                        ' MyStr2 sorts before MyStr1. Returns 1.
                        MyComp = StrComp(MyStr2, MyStr1)
                        
StrConv

StrConv 函數(shù)返回一個(gè)字符串,,該字符串轉(zhuǎn)換為輸入?yún)?shù)中指定的值。StrConv 函數(shù)將轉(zhuǎn)換字符串,。這種轉(zhuǎn)換基于 Conversion 參數(shù)中的值,。Conversion 參數(shù)中的值是 VbStrConv 枚舉的成員。

Conversion 參數(shù)的設(shè)置為:
枚舉成員 說(shuō)明
VbStrConv.None 不執(zhí)行轉(zhuǎn)換
VbStrConv.LinguisticCasing - 使用語(yǔ)言規(guī)則而不是文件系統(tǒng)(默認(rèn)值)來(lái)區(qū)分大小寫(xiě)
- 僅對(duì)大寫(xiě)和小寫(xiě)字母有效
VbStrConv.UpperCase 將字符串轉(zhuǎn)換為大寫(xiě)字符
VbStrConv.LowerCase 將字符串轉(zhuǎn)換為小寫(xiě)字符
VbStrConv.ProperCase 將字符串中每個(gè)單詞的第一個(gè)字母轉(zhuǎn)換為大寫(xiě)

示例:

以下示例將文本轉(zhuǎn)換為小寫(xiě)字母:
Dim sText, sNewText As String
                        sText = "Hello World"
                        sNewText = StrConv(sText, VbStrConv.LowerCase)
                        Debug.WriteLine (sNewText)   ' Outputs "hello world".
                        
StrDup

StrDup 函數(shù)返回一個(gè)由指定的字符重復(fù)指定的次數(shù)而形成的字符串或?qū)ο蟆?strong>StrDup 函數(shù)具有兩個(gè)參數(shù):Number 參數(shù)和 Character 參數(shù),。Number 參數(shù)指定函數(shù)必須返回的字符串的長(zhǎng)度,。StrDup 函數(shù)僅使用 Character 參數(shù)中的第一個(gè)字符,。Character 參數(shù)可以是 Char 數(shù)據(jù)類(lèi)型、String 數(shù)據(jù)類(lèi)型或 Object 數(shù)據(jù)類(lèi)型,。

示例:

以下示例使用 StrDup 函數(shù)返回由重復(fù)字符組成的字符串:
Dim aString As String = "Wow! What a string!"
                        Dim aObject As New Object()
                        Dim myString As String
                        aObject = "This is a String that is contained in an Object"
                        myString = StrDup(5, "P")   ' Returns "PPPPP"
                        myString = StrDup(10, aString)   ' Returns "WWWWWWWWWW"
                        myString = StrDup(6, aObject)   ' Returns "TTTTTT"
                        
StrReverse

StrReverse 函數(shù)返回一個(gè)字符串,該字符串將指定字符串的字符順序顛倒過(guò)來(lái),。

示例:
Dim myString As String = "ABCDEFG"
                        Dim revString As String
                        ' Returns "GFEDCBA".
                        revString = StrReverse(myString)
                        
UCase

UCase 函數(shù)返回一個(gè)字符串或字符,,包含已轉(zhuǎn)換為大寫(xiě)的指定字符串。只有小寫(xiě)字母被轉(zhuǎn)換為大寫(xiě)字母,。所有大寫(xiě)字母和非字母字符均保持不變,。

示例:

以下示例使用 UCase 函數(shù)返回字符串的大寫(xiě)形式:
Dim LowerCase, UpperCase As String
                        LowerCase = "Hello World 1234"   ' String to convert.
                        UpperCase = UCase(LowerCase)   ' Returns "HELLO WORLD 1234".
                        


使用 System.String 類(lèi)中的字符串函數(shù)

以下是 System 命名空間的 String 類(lèi)中的字符串函數(shù)。

注意:要使用字符串函數(shù),,請(qǐng)通過(guò)在源代碼開(kāi)始處添加以下代碼將 System.String 命名空間導(dǎo)入到項(xiàng)目中:
Imports System.String
                        
Compare

Compare 函數(shù)比較輸入?yún)?shù)中的兩個(gè)字符串,。通過(guò)使用單詞排序規(guī)則來(lái)執(zhí)行比較。發(fā)現(xiàn)不相等情況或比較完兩個(gè)字符串后,,比較將終止,。

Compare 示例:
' Code is not compiled unless it is put in a Sub or in a Function.
                        Dim s1, s2 As String
                        s1 = "testexample"
                        s2 = "testex"
                        MsgBox(Compare(s2, s1)) 'Returns -1.
                        MsgBox(Compare(s1, s2)) 'Returns 1.
Concat

Concat 函數(shù)將一個(gè)或多個(gè)字符串相連接,然后返回連接后的字符串,。

Concat 示例:

以下示例顯示了如何使用 Concat 的重載版本:
' Code is not compiled unless it is put in a Sub or in a Function.
                        Dim s1, s2, sa(3) As String
                        sa(0) = "A"
                        sa(1) = "B"
                        sa(2) = "C"
                        s1 = "test"
                        s2 = "example"
                        s1 = Concat(s1, s2)  'Returns testexample.
                        MsgBox(s1)
                        MsgBox(Concat(sa)) 'Returns ABC.
Copy

Copy 函數(shù)將指定字符串中的值復(fù)制到另一個(gè)字符串中,。

Copy 示例:
' Code is not compiled unless it is put in a Sub or in a Function.
                        Dim s1, s2 As String
                        s1 = "Hello World"
                        'Copy the string s1 to s2.
                        s2 = Copy(s1)
                        MsgBox(s2) 'Displays Hello World.
Remove

Remove 函數(shù)從指定字符串的指定位置開(kāi)始刪除指定數(shù)目的字符。Remove 函數(shù)有兩個(gè)參數(shù),。分別是 StartIndex 參數(shù)和 Count 參數(shù),。Startindex 參數(shù)指定開(kāi)始刪除字符的字符串位置。Count 參數(shù)指定要?jiǎng)h除的字符數(shù),。

Remove 示例:
' Code is not compiled unless it is put in a Sub or in a Function.
                        Dim s1, s2 As String
                        s1 = "Hello World"
                        'Removes 3 characters starting from character e.
                        s2 = s1.Remove(1, 3)
                        MsgBox(s2) 'Displays Hello World.

Substring

Substring 函數(shù)從指定字符串的指定位置開(kāi)始檢索字符串,。

Substring 示例:

以下示例將從指定的字符位置開(kāi)始并按指定的長(zhǎng)度來(lái)檢索子字符串:
' Code is not compiled unless it is put in a Sub or in a Function.
                        Dim s1, s2 As String
                        s1 = "Hello World"
                        s2 = s1.Substring(6, 5) 'Returns World.
                        MsgBox(s2)
ToCharArray

ToCharArray 函數(shù)將字符串中的字符復(fù)制到 Unicode 字符數(shù)組中。

ToCharArray 示例:

以下示例將指定位置中的字符復(fù)制到 Character 數(shù)組中:
 ' Code is not compiled unless it is put in a Sub or in a Function.
                        Dim s1 As String
                        Dim ch(10) As Char
                        s1 = "Hello World"
                        'Copies the characters starting from W to d to a Character array.
                        ch = s1.ToCharArray(6, 5)
                        MsgBox(ch(3)) 'Displays l.
ToLower

ToLower 函數(shù)采用一個(gè)字符串作為參數(shù),,然后以小寫(xiě)形式返回該字符串的副本,。

ToLower 示例:
' Code is not compiled unless it is put in a Sub or in a Function.
                        Dim s1, s2 As String
                        s1 = "Hello World"
                        s2 = s1.ToLower() 'Converts any uppercase characters to lowercase.
                        MsgBox(s2) 'Displays hello world.
ToUpper

ToUpper 函數(shù)采用一個(gè)字符串作為參數(shù),然后以大寫(xiě)形式返回該字符串的副本,。

ToUpper 示例:
' Code is not compiled unless it is put in a Sub or in a Function.
                        Dim s1, s2 As String
                        s1 = "Hello World"
                        s2 = s1.ToUpper() 'Converts any lowercase characters to uppercase.
                        MsgBox(s2) 'Displays HELLO WORLD.
Trim,、TrimStartTrimEnd

這些函數(shù)會(huì)返回一個(gè)包含指定字符串的副本的字符串。使用 Trim 函數(shù)時(shí),,既沒(méi)有起始空格也沒(méi)有尾隨空格,。使用 TrimStart 函數(shù)時(shí),沒(méi)有起始空格,。使用 TrimEnd 函數(shù)時(shí),,沒(méi)有尾隨空格。

示例:

以下示例使用 TrimStart 函數(shù)刪除字符串變量開(kāi)始處的空格,,使用 TrimEnd 函數(shù)刪除字符串變量末尾的空格,,以及使用 Trim 函數(shù)刪除字符串變量中的起始空格和尾隨空格:
' Code is not compiled unless it is put in a Sub or in a Function.
                        Dim s1, s2 As String
                        s1 = "   Hello World   "
                        s2 = s1.Trim()      'Returns Hello World without any white spaces.
                        s2 = s1.TrimStart   'Removes the spaces at the start.
                        s2 = s1.TrimEnd     'Removes the white spaces at the end.

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多