VBA字符串處理大全-from EH

VBA字符串處理大全 轉載出處

1 VBA中的字符串
2 VBA中處理字符串的函數
    2.1 比較字符串
    2.2 轉換字符串
    2.3 創建字符串
    2.4 獲取字符串的長度
    2.5 格式化字符串
    2.6 查找字符串
    2.7 提取字符/字符串
    2.8 刪除空格
    2.9 返回字符代碼
    2.10 返回數值代表的相應字符
    2.11 使用字節的函數
    2.12 返回數組的函數
    2.13 連接字符串
    2.14 替換字符串
    2.15 反向字符串
====================================================

1 VBA中的字符串

VBA不僅可以處理數字,也可以處理文本(字符串)。VBA提供了兩類字符串:
一類爲固定長度的字符串,聲明時包含指字的字符數。例如,下面的語句
Dim strFixedLong As String*100
聲明字符串變量後,無論賦予該變量多少個字符,總是隻包含100個字符,但字符串最長不超過65526個字符,且需要使用Trim函數去掉字符串中多餘的空格。定長字符串只有在必要時才使用。
另一類爲動態字符串。例如,聲明字符串變量Dim strDynamic As String後,可以給該變量任意賦值,最多可包含20億個字符。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2 VBA中處理字符串的函數

2.1 比較字符串
通常,在VBA中進行字符串比較時,會用到比較運算符(如=、>等)、Like運算符和StrComp函數。此外,在模塊的開頭用Option Compare語句指定比較方式。
2.1.1 比較運算符
可以採用簡單的邏輯運算符進行兩個字符串的比較,即<(小於)、<=(小於或等於)、>(大於)、>=(大於或等於)、=(等於)、<>(不等於)。此外,還可以使用Like運算符進行比較。
2.1.2 StrComp函數
StrComp函數返回字符串比較的結果。其語法爲:
    StrComp(string1,string2[,compare])
其中,參數string1和strng2爲必需的參數,可以是任何有效的字符串表達式。
參數Compare爲可選參數,如果該參數爲Null,將發生錯誤。如果參數Compare設置爲常數vbUseCompareOption或-1或忽略該參數,將使用Option Compare語句設置進行比較;如果忽略該參數且沒有設置Option Compare語句,則按二進制進行比較;如果參數Compare設置爲常數vbBinaryCompare或0,則用二進制進行比較;如果參數Compare設置爲常數vbTextCompare或1,則按文本進行比較;如果參數Compare設置爲常數vbDatabaseCompare或2,此時僅適用於Microsoft Access,進行基於數據庫信息的比較。
StrComp函數的返回值爲:如果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)的結果爲:" & MyComp1
  MsgBox "StrComp(MyStr1, MyStr2, 0)的結果爲:" & MyComp2
  MsgBox "StrComp(MyStr1, MyStr2)的結果爲:" & MyComp3
  MsgBox "StrComp(MyStr2, MyStr1)的結果爲:" & MyComp4
End Sub
示例說明:如果StrComp函數的第三個參數值爲1,則以文本比較的方式進行字符串比較;如果第三個參數值爲0或忽略該參數,則以二進制比較的方式進行字符串比較。注意,文本比較的方式不區分字母大小寫,而二進制比較方式則區分大小寫。
[編程方法和技巧] 完成一次簡單的單一比較,如
If UCase(sString1)<UCase(sString2) Then
比使用StrComp函數:
If StrComp(sString1,sString2,vbTextCompare)=-1 Then
在性能上要提高30%,且更容易閱讀和理解。

2.2 轉換字符串
2.2.1 StrConv函數
使用StrConv函數來按指定類型轉換字符串。其語法爲:
    StrConv(string,conversion,LCID)
其中,參數string爲要轉換的字符串,參數conversion爲指定轉換的類型,參數LCID爲可選參數。
如果將參數conversion設置爲vbUpperCase或1,則將字符串轉換成大寫;設置爲vbLowerCase或2,則將字符串轉換成小寫;設置爲vbProperCase或3,則將字符串中每個字的開頭字母轉換成大寫;設置爲vbUnicode或64,則根據系統的缺省碼頁將字符串轉換成Unicode;設置爲vbFromUnicode或128,則將字符串由Unicode轉換成系統的缺省碼頁。
在將ANSI格式的Byte數組轉換成字符串時,應使用StrConv函數;轉換Unicode格式的數組時,使用賦值語句。下面的例子使用StrConv函數將Unicode字符串轉換成ANSI字符串:
Sub testConverseString()
  Dim i As Long
  Dim x() As Byte
  x = StrConv("ABCDEFG", vbFromUnicode)    ' 轉換字符串。
  For i = 0 To UBound(x)
    Debug.Print x(i)
  Next
End Sub
下面的例子將句子中每個詞語的首字母轉換爲大寫:
Sub testConverseString2()
  Debug.Print StrConv("my book is this book.", vbProperCase)
End Sub
程序運行後,在VBE窗口中的立即窗口中將會看到上述結果。
下面的示例演示瞭如何把一個字符串轉換爲字節數組,以便使用在API函數調用中:
Sub Test()
  Dim byArray() As Byte
  Dim sString As String
  sString = "Some stuff"
  byArray = StrConv(sString, vbFromUnicode)
End Sub
StrConv函數將下面的字符看成是字的分隔符:
Null:Chr$(0)
水平製表符:Chr$(9)
換行符:Chr$(10)
垂直製表符:Chr$(11)
換頁符:Chr$(12)
回車符:Chr$(13)
空格:Chr$(32)
[編程方法和技巧] 在使用API時該函數很重要,很多程序調用都要求傳遞給它們Unicode字符,或者賦給返回變量Unicode字符。
2.2.2 Str函數
將數值轉換成字符串,即返回代表一個數值的字符串。其語法爲:
    Str(number)
當一個數字轉成字符串時,總會在前面保留一個空位來表示正負,即字符串的第一位一定是空格或正負號。如果參數number爲正,返回的字符串前面包含一空格。Str函數將句點(.)作爲有效的小數點。示例如下:
  MyString = Str(459)    ' 返回 " 459"
  MyString = Str(-459.65)   ' 返回 "-459.65"
  MyString = Str(459.001)    ' 返回 " 459.001"
[編程方法和技巧] 使用LTrim函數可刪除Str函數在返回的字符串開頭添加的前導空格。此外,CStr函數和Format函數已經取代了Str函數,CStr函數不用爲正數的符號而添加前導空格,Format函數能夠用來識別小數點。
2.2.3 CStr函數
CStr將數值表達式轉換成String數據類型。示例如下:
MyDouble = 437.324   ' MyDouble 爲 Double 類型
MyString = CStr(MyDouble)    ' MyString 的內容爲"437.324"
[編程方法和技巧] 傳遞給CStr的未初始化的數字數據類型返回“0”,傳遞給CStr的未初始化的日期變量返回“0:00:00”。

2.3 創建字符串
2.3.1 Space函數
該函數返回指定數的空格的字符串。語法爲:
    Space(number)
其中,參數number必須,爲字符串中指定的空格數。
如下例所示:
Sub CreateString1()
  Dim MyString
' 返回 10 個空格的字符串。
  MyString = Space(10)
  ' 將 10 個空格插入兩個字符串中間。
  MyString = "Hello" & Space(10) & "World"
End Sub
該函數可用於在調用外部DLL時建立字符串緩衝區,特別是在調用Window API時。此外,使用該函數還可以使字符串在特定長度的緩衝區左對齊或右對齊。
注意,如果參數number是負數,則會產生運行時錯誤5:“無效的過程調用或參數”。
[編程方法和技巧] 可以使用Space函數添加和清除存儲在定長字符串中的數據,例如,下面的代碼用空格填充一個定長字符串:
Dim strFixed As String * 32
……
strFixed = Space(Len(strFixed))
2.3.2 String函數
該函數返回重複的字符或字符串。其語法爲:
    String(number,character)
其中,參數number必須,指定所返回的字符串的長度;參數character必須,指定字符的字符代碼或字符串表達式。
例如,下面使用String函數生成指定長度且只含單一字符的字符串。
Sub CreateString2()
  Dim MyString
  MyString = String(5, "*")    ' 返回 "*****"
  MyString = String(5, 42)    ' 返回 "*****"
  MyString = String(10, "ABC")    ' 返回 "AAAAAAAAAA"
End Sub
如果參數number包含Null,則返回Null;如果參數character包含Null,則返回Null;參數character可以指定爲字符串或者是ANSI字符代碼,如:
strString1=String(128,”=”) ‘用”=”填充
strString2=String(128,0) ‘用Chr$(0)填充
[編程方法和技巧] 
(1) String函數在用於創建較長的“_”,“-”,或者“=”構成的水平線以便給報表分段時十分有用。
(2) 當調用API函數向緩衝區寫入字符串值時,首先要用String函數創建一個長度合適的字符串變量,並且用諸如Chr$(0)之類的單個字符來填充。

2.4 獲取字符串的長度
可以使用Len函數來確定任何字符串或字符串表達式的長度,其語法爲:
    Len(string|varname)
其中,參數string爲任何有效的字符串表達式;參數varname爲任何有效的變量名稱。兩個參數必須取一。
利用LenB函數可以確定存儲某變量所需的實際字節數。
下面的示例使用Len函數來獲取某字符串的長度(字符數)或某變量的大小(位數)。
Type CustomerRecord    ' 定義用戶自定義的數據類型
    ID As Integer   ' 將此定義放在常規模塊中
    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"    ' 設置變量初值
  MyLen = Len(MyInt)    ' 返回 2
  MyLen = Len(Customer)    ' 返回 42
  MyLen = Len(MyString)    ' 返回 11
  MyLen = Len(MyCur)    ' 返回 8
End Sub
此外,在需要大量判斷是否爲空字符串的代碼中,使用Len函數也可以加快代碼執行的速度。例如:
If strTemp = "" Then
  '要執行的代碼
End If
上面的代碼可以用以下代碼代替:
If Len(strTemp) = 0 Then
  '要執行的代碼
End If
注意:
(1) 參數string和參數varname互不相容,即只能指定這兩個參數中的某一個,不能同時指定這兩個參數。
(2) 如果參數string或參數varname中包含Null,則Len函數會返回Null。
(3) 在向文件寫入某種用戶自定義類型數據時,Len函數會返回數據的大小(字符數)。
(4) LenB函數返回用戶自定義類型數據實際佔用的內存大小。
(5) 在對字節數據或Unicode字符串使用LenB函數時,LenB函數返回表示數據或字符串的字節數。
(6) 不能對對象變量使用Len函數。
(7) 如果參數varname是一個數組,則必須指定一個有效的下標,即Len函數不能確定數組中元素的總數或數組佔用內存的大小。
(8) Len函數對Variant類型變量的處理和字符串變量一樣,Len函數返回變量所存儲的實際字符數,如下面的代碼:
Dim vVar
vVar=100
MsgBox Len(vVar)
結果爲3。
(9) 由於VB本質上使用的是Unicode字符串(用兩個字節的空間來存儲一個字符),因此當相同的字符串變量傳遞給Len函數和LenB函數時會出現不同的返回值。例如,對於一個包含4個字符的字符串,使用Len函數時返回值爲4,使用LenB函數則爲8。
(10) 使用強類型變量(即強制聲明該變量的類型)時,Len函數會返回存儲該變量所需的字節數。例如,長整型變量的長度爲4。
下面的示例說明了爲什麼要顯式聲明數據類型:
Sub test()
  Dim lVar As Long
  Dim vVar
  lVar = 10000000
  vVar = 10000000
  MsgBox LenB(lVar) '返回4
  MsgBox LenB(vVar)'返回16
End Sub

很顯然,Variant類型變量比強制聲明的類型變量要佔用更多的內存。

2.5 格式化字符串
可以使用Format函數規定輸出的字符串的格式,其語法爲:
    Format(expression[,format[,firstdayofweek[,firstweekofyear]]])
其中,參數expression必須,爲任何有效的表達式;其餘參數均可選。參數format表示所要採用的格式,參數firstdayofweek使用常數,表示一星期的第一天,參數firstweekofyear使用常數,表示一年的第一週。
在參數format中,使用字符“@”,表示空格或字符佔位符,如果在輸入的字符串相應位置有字符,則顯示該字符,否則顯示空格;使用字符“&”,表示空或字符佔位符,如果在輸入的字符串的相應位置有字符,則顯示該字符,否則不顯示;使用字符“<”,則將所有字符顯示爲小寫格式;使用字符“>”,則將所有字符顯示爲大寫格式;使用字符“!”,強制佔位符從左向右填滿, 滿足默認爲從右向左。
例如下面的代碼:
Dim strOut
  strOut = Format("8888888", "(@@@)&&&-&&&&") '返回(   )888-8888
  strOut = Format("8888888", "(&&&)&&&-&&&&") '返回()888-8888
在Format函數中,還可以同時格式化普通字符串和空字符串,只須在指定的格式中用分號隔開兩個部分,第一部分用於非空字符串,第二部分用於空字符串。例如:
strOut = Format("6666666", "(@@@)&&&-&&&&;No Phone") '返回(   )666-6666
strOut = Format("", "(@@@)&&&-&&&&;No Phone") '返回No Phone
又如,下面的代碼將字母全部轉換爲大寫:
Dim strOut
strOut = Format("Hello", ">@@@@@") ‘返回HELLO
同理,可以使用“<”將字母全部轉換爲小寫。
Format函數的簡要使用規則:
(1) 允許用預先定義或用戶定義的格式來建立多種用於輸出字符串、數字和日期/時間數據的方法。
(2) 創建用戶定義的數值格式最多可以有四個部分,每個部分代表一種不同類型的數值,且用分號分隔。第一部分在單獨命名使用時可用於所有值,與其它多個部分一起使用時只用於正數;第二部分用於負數;第三部分用於零值;第四部分用於Null值。
在參數format中不必包括所有四部分,但所用部分的數目決定了每一個部分所定義的數值類型:只有一個部分,則應用於所有數值;有兩個部分,則第一部分應用於正數和零值,第二部分應用於負數;有三個部分,則第一部分用於正數,第二部分應用於負數,第三部分應用於零值;有四個部分,則每部分的使用如前所述。
如果忽略了一個部分,則該部分使用與定義正數的部分一樣的格式,例如:
“#.00;;#,##”
表示負數值與正數值使用同一種格式顯示。
如果參數含有命名格式,則只能有一個部分。
(3) 字符串值的用戶定義格式有兩個部分,第一部分可應用於所有值,第二部分只應用於Null值或零長字符串。
(4) 預定義的日期和時間格式如下:
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) 預定義的數值格式如下:
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) 創建用戶自定義的日期和時間格式的字符:
C
元素:日期
顯示:基於當前Windows系統的短日期和短時間國際設置格式的日期或時間。
範例:Format("28/02/2007 17:30:03","c")
返回:2007-2-28 17:30:03
dddddd
元素:日期
顯示:基於當前Windows系統的長日期國際設置格式的完整日期。
範例:Format("28/02/2007","dddddd")
返回:2007年2月28日
/
元素:日期分隔符
範例:Format("28/02/2007","mm-dd-yyyy")
返回:02-28-2007
d
元素:日
顯示:1~31範圍內的一個數字,無前導0。
範例:Format("02/02/2007","d")
返回:2
dd
元素:日
顯示:01~31範圍內的一個數字,有前導0。
範例:Format("02/02/2007","dd")
返回:02
ddd
元素:日
顯示:英文簡寫(Sun~Sat)
範例:Format("02/02/2007","ddd")
返回:Fri
dddd
元素:日
顯示:英文全稱(Sunday~Saturday)
範例:Format("02/02/2007","dddd")
返回:Friday
ddddd
元素:日期
顯示:基於計算機Windows國際設置短日期格式的日期。
範例:Format("02/02/2007","ddddd")
返回:2007-2-2
h
元素:小時
顯示:0~23範圍內的一個數字,無前導0。
範例:Format("05:08:06","h")
返回:5
hh
元素:小時
顯示:00~23範圍內的一個數字,有前導0。
範例:Format("05:08:06","hh")
返回:05
n
元素:分
顯示:0~59範圍內的一個數字,無前導0。
範例:Format("05:08:06","n")
返回:8
nn
元素:分
顯示:00~59範圍內的一個數字,有前導0。
範例:Format("05:08:06","nn")
返回:08
s
元素:秒
顯示:0~59範圍內的一個數字,無前導0。
範例:Format("05:08:06","s")
返回:6
ss
元素:秒
顯示:00~59範圍內的一個數字,有前導0。
範例:Format("05:08:06","ss")
返回:06
ttttt
元素:時間
顯示:基於12小時制的時間,包含Windows區域設置中指定的時間分隔符和前導0。
範例:Format("05:08:06","ttttt")
返回:5:08:06
AM/PM
元素:時間
顯示:用大寫的AM和PM表示的12小時制的時鐘格式。
範例:Format("17:08:06","hh:mm:ss AM/PM")
返回:05:08:06 PM
am/pm
元素:時間
顯示:用小寫的am和pm表示的12小時制時鐘格式。
範例:Format("17:08:06","hh:mm:ss am/pm")
返回:05:08:06 pm
A/P
元素:時間
顯示:12小時制時鐘格式,用大寫“A”表示AM,大寫“P”表示PM。
範例:Format("17:08:06","hh:mm:ss A/P")
返回:05:08:06 P
a/p
元素:時間
顯示:12小時制時鐘格式,用小寫“a”表示am,小寫“p”表示pm。
範例:Format("17:08:06","hh:mm:ss a/p")
返回:05:08:06 p

元素:時間分隔符
顯示:時間格式
範例:Format("17:08:06","hh:mm:ss")
返回:17:08:06
w
元素:星期幾
顯示:1~7範圍內的一個數字(1~7分別表示星期天到星期六)。
範例:Format("02/02/2007","w")
返回:6
ww
元素:周
顯示:1~54範圍內的一個數字。
範例:Format("02/02/2007","ww")
返回:5
m
元素:月
顯示:1~12範圍內的一個數字,無前導0。
範例:Format("02/02/2007","m")
返回:2
mm
元素:月
顯示:01~12範圍內的一個數字,有前導0。
範例:Format("02/02/2007","mm")
返回:02
mmm
元素:月
顯示:英文月份簡寫(Jan~Dec)
範例:Format("02/02/2007","mmm")
返回:Feb
mmmm
元素:月
顯示:英文月份全稱(January~December)
範例:Format("02/02/2007","mmmm")
返回:February
q
元素:季度
顯示:1~4範圍內的一個數字
範例:Format("02/02/2007","q")
返回:1
y
元素:一年中的某天
顯示:1~366範圍內的一個數字。
範例:Format("02/02/2007","y")
返回:33
yy
元素:年
顯示:00~99範圍內的一個兩位數字。
範例:Format("02/02/2007","yy")
返回:07
yyyy
元素:年
顯示:100~9999範圍內的一個四位數字。
範例:Format("02/02/2007","yyyy")
返回:2007
(7)用於創建用戶自定義數字格式的字符
0
說明:數字佔位符。如果參數expression所代表的數值在相應的0位置上有一個數字,則顯示這個數字,否則顯示0。所指定的小數點後的位數,使數值舍入爲給定的小數位數,但不影響小數點左邊的數字位數。
範例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
#
說明:數字佔位符。如果參數expression所代表的數值在相應的#位置上有一個數字,則顯示這個數字,否則什麼也不顯示。
範例1:Format(23.675,"##.##")  返回:23.68
範例2:Format(23.675,"##.####")  返回:23.675
範例3:Format(12345.25,"#,###.##")  返回:12,345.25
.
說明:小數點佔位符。小數點佔位符實際顯示的字符由本機Windows系統國際設置格式決定。
%
說明:百分數佔位符。首先將參數expression所代表的數值乘以100,然後把它作爲百分數顯示。
範例:Format(0.25,"##.00%") 返回:25.00%

說明:千位分隔符。實際顯示的字符由本機Windows系統國際設置格式決定。在格式定義中只需要給出一個千位分隔符。
範例:Format(1000000,"#,###")  返回:1,000,000
E-E+ e-e+
說明:科學計數法格式。如果格式表達式在E-、E+或e-、e+的右邊至少有一個數字佔位符(0或#),數字就以科學計數法格式顯示數字,參數Format中所用的字母E或e在該數字和它的指數之間顯示。右邊的數字佔位符數目決定了要在指數中顯示的位數。使用E-或e-可以在負指數前插入一個減號,使用E+或e+可以在正指數前插入一個正號。
範例:Format(1.09837555,"######E-###")  返回:109838E-5
-+$
說明:顯示一個直接量字符。
範例:Format(2345.25,"$#,###.##")  返回:$2,345.25
\
說明:反斜槓後的字符以直接量字符顯示。可以用反斜槓將某個特定格式的字符以直接量字符顯示。
範例:Format(0.25,"##.##\%")  返回:.25%
(8) 用於創建用戶自定義字符串格式的字符
@
說明:字符佔位符。如果expression在相應的@位置上有一個字符,就顯示這個字符,否則顯示一個空格。
範例:Format("VBA","\*@\*@@@@@")  返回:* *  VBA
&
說明:字符佔位符。如果expression在相應的&位置上有一個字符,就顯示這個字符,否則什麼也不顯示。
範例:Format("VBA","\*&&\*&&&&")  返回:**VBA
<
說明:用小寫形式顯示所有字符。
範例:Format("VBA","<")  返回:vba
>
說明:用大寫形式顯示所有字符。
範例:Format("vba",">")  返回:VBA

說明:從左向右處理佔位符(缺省情況爲從右向左處理佔位符)。
[編程方法和技巧]
(1) 使用沒有格式定義的Format函數格式化數字比使用Str函數格式化數字更好。Format函數與Str函數不同,它會把正數中一般保留用於表示符號的前導空格清除掉。
(2) 可以使用Format函數以1000爲單位對數字進行標度,做法是在語句中小數點的左邊用一個千位分隔符(,)表示標度數字的一個千位;可以使用多個千位分隔符。例如:
Format(1000000,"##0,.") 返回:1000.
Format(1000000,"##0,,.")  返回:1.

2.6 查找字符串
2.6.1 InStr函數
可使用InStr函數返回一字符串在另一字符串中的位置,因此,也可以使用該函數確定一個字符串中是否包含有另一個字符串。其語法爲:
    InStr([Start,]string1,string2[,compare])
其中,參數Start爲可選參數,設置查找的起點,如果省略,則從第一個字符的位置開始查找,當指定了參數Compare時,則要指定此參數。參數string1爲被查找的字符串,參數string2爲要查找的字符串,這兩個參數都是必需的。
如果在String1中沒有找到String2,返回0;如果找到String2,則返回String2第一個出現的首字符位置(即1到String1的長度);如果String2的長度爲零,返回Start。
可看看下面的示例:
Sub test()
  Dim SearchString, SearchChar, MyPos
  SearchString = "XXpXXpXXPXXP"   '被搜索的字符串
  SearchChar = "P"   '要查找字符串 "P"
'從第四個字符開始,以文本比較的方式找起,返回值爲 6(小寫 p)
  '小寫 p 和大寫 P 在文本比較下是一樣的
  MyPos = InStr(4, SearchString, SearchChar, 1)
  Debug.Print MyPos
  '從第一個字符開使,以二進制比較的方式找起,返回值爲 9(大寫 P)
  '小寫 p 和大寫 P 在二進制比較下是不一樣的
  MyPos = InStr(1, SearchString, SearchChar, 0)
  Debug.Print MyPos
  '缺省的比對方式爲二進制比較(最後一個參數可省略)
  MyPos = InStr(SearchString, SearchChar)    '返回 9
  Debug.Print MyPos
  MyPos = InStr(1, SearchString, "W")   '返回 0
  Debug.Print MyPos
End Sub
2.6.2 InStrRev函數
也可以使用InStrRev函數返回一個字符串在另一個字符串中出現的位置,與InStr函數不同的是,從字符串的末尾算起。其語法爲:
    InStrRev(String1,String2[,[Start[,compare])
參數String1爲被查找的字符串,參數String2爲要查找的字符串,這兩個參數都是必需的。參數Start爲可選參數,設置每次查找開始的位置,若忽略則使用-1,表示從上一個字符位置開始查找。參數Compare爲可選參數,表示所使用的比較方法,如果忽略則執行二進制比較。
下面的示例使用了InStr函數和InStrRev函數,相應的結果不同:
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函數
Left函數可以從字符串的左邊開始提取字符或指定長度的字符串,即返回包含字符串中從左邊算起指定數量的字符。其語法爲:
    Left(String,CharNum)
其中,如果參數String包含Null,則返回Null;如果參數CharNum的值大於或等於String的字符數,則返回整個字符串。
例如,下面的代碼返回指定字符串的前兩個字符:
strLeft=Left(“This is a pig.”,2)
Left函數與InStr函數結合,返回指定字符串的第一個詞,例如下面的代碼:
str = "This is a pig."
FirstWord = Left(str, InStr(str, " ") - 1)
2.7.2 Right函數
與Left函數不同的是,Right函數從字符串的右邊開始提取字符或指定長度的字符串,即返回包含字符串中從右邊起指定數量的字符。其語法爲:
    Right(String,CharNum)
例如:
AnyString = "Hello World"    ' 定義字符串
MyStr = Right(AnyString, 1)   ' 返回 "d"
MyStr = Right(AnyString, 6)    ' 返回 " World"
MyStr = Right(AnyString, 20)   ' 返回 "Hello World"
如果存放文件名的字符串中沒有反斜槓(\),下面的代碼將反斜槓(\)添加到該字符串中:
If Right(strFileName,1) <> “” Then
  strFileName=strFileName & “\”
End If
下面的函數假設傳遞給它的參數或者是文件名,或者是包含完整路徑的文件名,從字符串的末尾開始返回文件名。
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函數
Mid函數可以從字符串中提取任何指定的子字符串,返回包含字符串中指定數量的字符的字符串。其語法爲:
    Mid(String,Start[,Len])
其中,如果參數String包含Null,則返回Null;如果參數Start超過了String的字符數,則返回零長度字符串(“”);如果參數Len省略或超過了文本的字符數,則返回字符串從Start到最後的所有字符。
例如,下面的代碼:
Str=Mid(“This is a pig.”,6,2)
將返回文本“is”。
下面的代碼:
MyString = "Mid Function Demo"   '建立一個字符串
FirstWord = Mid(MyString, 1, 3)   '返回 "Mid"
LastWord = Mid(MyString, 14, 4)    '返回 "Demo"
MidWords = Mid(MyString, 5)   '返回 "Funcion Demo"
Mid函數常用於在字符串中循環,例如,下面的代碼將逐個輸出字符:
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語句
Mid語句可以用另一個字符串中的字符替換某字符串中指定數量的字符。其語法爲:
    Mid(Stringvar,Start[,Len])=string
其中,參數Stringvar代表爲要被更改的字符串;參數Start表示被替換的字符開頭位置;參數Len表示被替換的字符數,若省略則全部使用string;參數string表示進行替換的字符串。
被替換的字符數量總小於或等於Stringvar的字符數;如果string的數量大於Len所指定的數量,則只取string的部分字符。示例如下:
MyString = "The dog jumps"   ' 設置字符串初值
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函數刪除字符串前面的空格;
RTrim函數刪除字符串後面的空格;
Trim函數刪除兩頭的空格。
示例如下:
MyString = "  <-Trim->  "    ' 設置字符串初值
TrimString = LTrim(MyString)    ' TrimString = "<-Trim->  "
TrimString = RTrim(MyString)   ' TrimString = "  <-Trim->"
TrimString = LTrim(RTrim(MyString))    ' TrimString = "<-Trim->"
' 只使用 Trim 函數也同樣將兩頭空格去除
TrimString = Trim(MyString)   ' TrimString = "<-Trim->"
- - - - - - - - - - - - - - - - - - - - - - -

2.9 返回字符代碼
Asc函數返回指定字符串表達式中第一個字符的字符代碼。示例如下:
MyNumber = Asc("A")   ' 返回 65
MyNumber = Asc("a")    ' 返回 97
MyNumber = Asc("Apple")   ' 返回 65
[編程方法和技巧]
(1) 在數據驗證中用Asc來決定一些條件,如第一個字符是大寫還是小寫、是字母還是數字。
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 "第一個字符是大寫"
    ElseIf iChar >= 97 And iChar <= 122 Then
      MsgBox "第一個字符是小寫"
    Else
      MsgBox "第一個字符不是字母"
    End If
  Else
    MsgBox "請在文本框中輸入"
  End If
End Sub
(2) 用Asc函數和Chr函數來創建基本加密的方法。
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 返回數值代表的相應字符
Chr函數返回指定字符碼所代表的字符,其語法爲:
    Chr(charcode)
其中參數charcode代表字符碼,一般爲0~255。例如:
MyChar = Chr(65)  ' 返回 A
MyChar = Chr(97)   ' 返回 a
MyChar = Chr(62)  ' 返回 >
MyChar = Chr(37)  ' 返回 %
[編程方法和技巧]
(1) 使用Chr(34)將引號嵌入字符串,如
Chr(34) & sString & Chr(34)
(2) 下面列出了在調用Chr函數時比較常用的字符代碼:
代碼  值    描述
0   Null   相當於vbNullChar常數
8   BS   相當於vbBack常數
9   TAB   相當於vbTab常數
10   CR   相當於vbCr和vbCrLf常數
13   LF   相當於vbLf和vbCrLf常數
34   “”   引號
- - - - - - - - - - - - - - - - - - - - - - -

2.11 使用字節的函數
VBA中返回字符串的函數有兩種格式,一種以$結尾,返回字符串,不需要進行類型轉換,所以速度較快,但如果輸入值是包含Null的Viarant,則會發生運行錯誤;一種沒有$,返回Viarant數據類型,如果輸入值是包含Null的Viarant,則返回Null。因而,如果要使得程序運行速度快,則使用帶有$的函數且要避免向這些函數傳遞空值。
- - - - - - - - - - - - - - - - - - - - - - -

2.12 返回數組的函數
2.12.1 Filter函數
Filter函數返回一個下標從零開始的數組,該數組包含基於指定篩選條件的一個字符串數組的子集。其語法爲:
    Filter(sourcearray,match[,include[,compare]])
其中,參數sourcearray必需,是要執行搜索的一維字符串數組;參數match必需,是要搜索的字符串;參數include可選,Boolean值,表示返回子串包含還是不包含match字符串,如果include爲True,返回包含match子字符串的數組子集,如果include爲False,返回不包含match子字符串的數組子集;參數compare可選,表示所使用的字符串比較類型,其設置值爲:-1(常數爲vbUseCompareOption)表示使用Option Compare語句的設置值來執行比較;0(常數爲vbBinaryCompare)表示執行二進制比較;1(常數爲vbTextCompare)表示執行文字比較;2(常數爲vbDatabaseCompare)只用於Microsoft Access,表示基於數據庫信息來執行比較。
如果在sourcearray中沒有發現與match相匹配的值,Filter函數返回一個空數組;如果sourcearray是Null或不是一個一維數組,則產生錯誤。
Filter函數所返回的數組,其元素數是所找到的匹配項目數。
[編程方法和技巧]
(1) Filter函數也可以過濾數字值。此時,應指定Variant類型的字符串sourcearray,並用數字值給數組賦值。同時,也可以將字符串、Variant、Long或Integer數據傳遞給match。但應注意,返回的字符串表現爲被過濾數字的字符串的形式。例如:
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函數可以和Dictionary對象很好地配合使用。可以把Dictionary對象產生的Key值作爲一種過濾Dictionary對象成員的快速方法傳遞給Filter函數,如:
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(不區分大小寫)的所有鍵
  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函數
Split函數返回一個下標從零開始的一維數組,包含指定數目的子字符串。其語法爲:
    Split(expression[,delimiter[,limit[,compare]]])
其中,參數expression必需,表示包含子字符串和分隔符的字符串,若expression是一個長度爲零的字符串(“”),該函數則返回一個沒有元素和數據的空數組;參數delimiter用於標識子字符串邊界的字符串字符,若忽略則使用空格(“ “)作爲分隔符,若是一個長度爲零的字符串則返回僅包含一個元素的數組,該元素是expression所表示的字符串;參數limit表示要返回的子字符串數,-1表示返回所有的子字符串;參數compare表示判別子字符串時使用的比較方式,其值與Filter函數的設置值相同。
- - - - - - - - - - - - - - - - - - - - - - -

2.13 連接字符串
Join函數返回連接某數組中的多個子字符串而組成的字符串,即將數組中的字符串連接起來。其語法爲:
    Join(sourcearray[,delimiter])
其中,參數sourcearray必需,是包含被連接子字符串的一維數組;參數delimiter可選,代表在所返回的字符串中用於分隔子字符串的字符,若忽略則使用空(“ ”)來分隔,若爲零長字符串(“”),則所有項目都連接在一起,中間沒有分隔符。
- - - - - - - - - - - - - - - - - - - - - - -

2.14 替換字符串
Replace函數返回一個被替換了的字符串,該字符串中指定的子字符串已被替換成另一個子字符串,並且替換指定次數。其語法爲:
    Replace(expression,find,replace[,start[,count[,compare]]])
其中,參數expression必需,表示所要替換的子字符串;參數find必需,表示要搜索到的子字符串;參數replace必需,表示用來替換的子字符串;參數start表示開始搜索的位置,若忽略,則從1開始;參數count表示進行替換的次數,缺省值是-1,表示進行所有可能的替換;參數compare表示判別子字符串時所用的比較方式,與Filter函數的設置值相同。
如果expression的長度爲零,Replace返回零長度字符串(“”);如果expression爲Null,則返回錯誤;如果find的長度爲零,則返回expression的副本;如果replace的長度爲零,則返回刪除了所有出現find的字符串的副本;如果start的值大於expression的長度,則返回長度爲零的字符串;如果count爲0,則返回expression的副本。
Replace函數返回的字符串是從參數start所指定的位置開始到expression結尾已經進行過替換的字符串。
注意:
(1) 如果沒有使用參數count,那麼當替換較短字符串時就要注意,防止形成一個不相關的字符。
(2) 如果start值大於1,返回的字符串將從start開始,而不是從原有字符串的第一個字符開始。
- - - - - - - - - - - - - - - - - - - - - - -

2.15 反向字符串
StrReverse函數返回與指定字符串順序相反的字符串,其語法爲:
    StrReverse(expression)
其中,參數expression是一個字符串,應用StrReverse函數後將返回與該字符串順序相反的字符串。如果expression是一個長度爲零的字符串(“”),則返回一個長度爲零的字符串;如果expression爲Null,則產生一個錯誤。
  
使用字符串函數
<script type="text/javascript"></script>不同的類中都定義有字符串函數。這些類包括 Microsoft.VisualBasic.Strings 類和 System.String 類。

使用 Microsoft.VisualBasic.Strings 類中的字符串函數
<script type="text/javascript"></script>下列函數是 Microsoft.VisualBasic.Strings 類中定義的字符串函數。
注意:要使用字符串函數,請通過在源代碼開始處添加以下代碼將命名空間 Microsoft.VisualBasic.Strings 導入到項目中: 
Imports Microsoft.VisualBasic.Strings
Asc 和 AscW
Asc 函數和 AscW 函數返回一個整數值,表示與指定的字符相對應的字符代碼。這兩個函數接受任何有效的字符表達式或字符串表達式作爲參數。當字符串是輸入參數時,則僅輸入字符串的第一個字符。當字符串不包含任何字符時,將出現 ArgumentException 錯誤。Asc 返回輸入字符的代碼數據點或字符代碼。對於單字節字符集 (SBCS) 值,返回值可以是 0 到 255 之間的數字。對於雙字節字符集 (DBCS) 值,返回值可以是 -32768 到 32767 之間的數字。AscW 爲輸入字符返回 0 到 65535 之間的 Unicode 代碼數據點。
示例: 
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.
Chr 和 ChrW
Chr 函數和 ChrW 函數返回與指定的字符代碼相關聯的字符。當 CharCode 超出 -32768 到 65535 的範圍時,將出現 ArgumentException 錯誤。
示例: 
本示例使用 Chr 函數返回與指定的字符代碼相關聯的字符。 
Dim MyChar As Char
MyChar = Chr(65)   ' Returns "A".
MyChar = Chr(97)   ' Returns "a".
MyChar = Chr(62)   ' Returns ">".
MyChar = Chr(37)   ' Returns "%".
GetChar
GetChar 函數返回一個 Char 值,表示指定字符串的指定索引中的字符。當索引小於 1 或大於指定輸入參數中最後一個字符的索引時,將出現 ArgumentException 錯誤。
示例:
本示例顯示瞭如何使用 GetChar 函數從字符串的指定索引中返回字符。 
Dim myString As String = "ABCDE"
Dim myChar As Char
myChar = GetChar(myString, 4)   ' myChar = "D"
InStr
InStr 函數返回一個整數,指定一個字符串在另一個字符串中首次出現的起始位置。
示例:
以下示例使用 InStr 函數返回一個字符串在另一個字符串中首次出現的位置: 
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 函數返回一個字符串,該字符串是通過連接數組中包含的子字符串創建的。包含必須連接的子字符串的一維數組將作爲參數傳遞給 Join 函數。該函數使用 Delimiter、String 作爲可選參數來分隔返回的字符串中的子字符串。當省略 Delimiter 時,將使用空格(“ ”)作爲子字符串之間的分隔符。當 Delimiter 是零長度字符串 ("") 時,數組中的子字符串將不使用分隔符,而是直接相連。
示例:
以下示例顯示瞭如何使用 Join 函數: 
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 函數返回已經轉換爲小寫的字符串或字符。只有大寫字母被轉換爲小寫。所有小寫字母和非字母字符均保持不變。
示例:
以下示例使用 LCase 函數返回字符串的小寫形式: 
Dim UpperCase, LowerCase As String
Uppercase = "Hello WORLD 1234"   ' String to convert.
Lowercase = LCase(UpperCase)   ' Returns "hello world 1234".
LTrim、RTrim 和 Trim
這些函數會返回一個包含指定字符串的副本的字符串。在使用 LTrim 時,沒有起始空格。在使用 RTrim 時,沒有尾隨空格。在使用 Trim 時,既沒有起始空格也沒有尾隨空格。
示例:
以下示例使用 LTrim 函數刪除字符串變量中的起始空格,使用 RTrim 函數刪除字符串變量中的尾隨空格,以及使用 Trim 函數刪除字符串變量中的起始空格和尾隨空格: 
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 函數返回一個字符串,其中指定的子字符串按指定的次數替換爲另一個子字符串。Replace 函數的返回值是一個字符串,該字符串在 Start 參數指定的位置開始,然後在指定字符串的末尾以 Find 參數和 Replace 參數中的值所指定的替換內容結束。
示例:
本示例演示了 Replace 函數: 
Dim myString As String = "Shopping List"
Dim aString As String
' Returns "Shipping List".
aString = Replace(myString, "o", "i")
StrComp
StrComp 函數返回 –1、0 或 1。這將基於字符串比較的結果。字符串將從第一個字符開始按字母數字順序排列的值進行比較。
示例:
以下示例使用 StrComp 函數返回字符串比較的結果。如果省略第三個參數,則使用選項比較語句或項目默認設置中定義的比較類型。 
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 函數返回一個字符串,該字符串轉換爲輸入參數中指定的值。StrConv 函數將轉換字符串。這種轉換基於 Conversion 參數中的值。Conversion 參數中的值是 VbStrConv 枚舉的成員。
Conversion 參數的設置爲:
枚舉成員 說明 
VbStrConv.None 不執行轉換 
VbStrConv.LinguisticCasing - 使用語言規則而不是文件系統(默認值)來區分大小寫
- 僅對大寫和小寫字母有效 
VbStrConv.UpperCase 將字符串轉換爲大寫字符 
VbStrConv.LowerCase 將字符串轉換爲小寫字符 
VbStrConv.ProperCase 將字符串中每個單詞的第一個字母轉換爲大寫 
示例:
以下示例將文本轉換爲小寫字母: 
Dim sText, sNewText As String
sText = "Hello World"
sNewText = StrConv(sText, VbStrConv.LowerCase)
Debug.WriteLine (sNewText)   ' Outputs "hello world".
StrDup
StrDup 函數返回一個由指定的字符重複指定的次數而形成的字符串或對象。StrDup 函數具有兩個參數:Number 參數和 Character 參數。Number 參數指定函數必須返回的字符串的長度。StrDup 函數僅使用 Character 參數中的第一個字符。Character 參數可以是 Char 數據類型、String 數據類型或 Object 數據類型。
示例:
以下示例使用 StrDup 函數返回由重複字符組成的字符串: 
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 函數返回一個字符串,該字符串將指定字符串的字符順序顛倒過來。
示例: 
Dim myString As String = "ABCDEFG"
Dim revString As String
' Returns "GFEDCBA".
revString = StrReverse(myString)
UCase
UCase 函數返回一個字符串或字符,包含已轉換爲大寫的指定字符串。只有小寫字母被轉換爲大寫字母。所有大寫字母和非字母字符均保持不變。
示例:
以下示例使用 UCase 函數返回字符串的大寫形式: 
Dim LowerCase, UpperCase As String
LowerCase = "Hello World 1234"   ' String to convert.
UpperCase = UCase(LowerCase)   ' Returns "HELLO WORLD 1234".

使用 System.String 類中的字符串函數
<script type="text/javascript"></script>以下是 System 命名空間的 String 類中的字符串函數。
注意:要使用字符串函數,請通過在源代碼開始處添加以下代碼將 System.String 命名空間導入到項目中: 
Imports System.String
Compare
Compare 函數比較輸入參數中的兩個字符串。通過使用單詞排序規則來執行比較。發現不相等情況或比較完兩個字符串後,比較將終止。
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 函數將一個或多個字符串相連接,然後返回連接後的字符串。
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 函數將指定字符串中的值複製到另一個字符串中。
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 函數從指定字符串的指定位置開始刪除指定數目的字符。Remove 函數有兩個參數。分別是 StartIndex 參數和 Count 參數。Startindex 參數指定開始刪除字符的字符串位置。Count 參數指定要刪除的字符數。
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 函數從指定字符串的指定位置開始檢索字符串。
Substring 示例:
以下示例將從指定的字符位置開始並按指定的長度來檢索子字符串: 
' 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 函數將字符串中的字符複製到 Unicode 字符數組中。
ToCharArray 示例:
以下示例將指定位置中的字符複製到 Character 數組中: 
' 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 函數採用一個字符串作爲參數,然後以小寫形式返回該字符串的副本。
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 函數採用一個字符串作爲參數,然後以大寫形式返回該字符串的副本。
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、TrimStart 和 TrimEnd
這些函數會返回一個包含指定字符串的副本的字符串。使用 Trim 函數時,既沒有起始空格也沒有尾隨空格。使用 TrimStart 函數時,沒有起始空格。使用 TrimEnd 函數時,沒有尾隨空格。
示例:
以下示例使用 TrimStart 函數刪除字符串變量開始處的空格,使用 TrimEnd 函數刪除字符串變量末尾的空格,以及使用 Trim 函數刪除字符串變量中的起始空格和尾隨空格: 
' 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.
==================================================(完)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章