Split函數
返回一個下標從零開始的一維數組,它包含指定數目的子字符串。
Split(字符串[, 分隔符[, 要返回的子字符串數量[,比較方式]]])
后三項可選,默認:分隔符為空格,返回全部子字符串,用Option Compare語句中的設置值執行比較。
下面是將1-12轉化為一月-十二月的自定義函數的例子。
Function Num2ch(ByVal n As Integer) As String
Dim Arr
Arr = Split(",一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月", ",")
Num2ch = Arr(n)
End Function
和Array函數相比,用Split的好處在于生成的數組是字符型的,寫法上也更簡潔。注意“一月”前的逗號,這是因為Split生成的數組下標是從0開始的,且不受Option Base句的影響。
Join函數
返回一個字符串,該字符串是通過連接某個數組中的多個子字符串而創建的。
Join(源數組[,分隔符])
默認:分隔符為空格
當將分隔符設為空串(””)時,會返回一個各數組元素會直接相連的字符串。
該函數是Split函數的反函數,它是將數組轉化為字符串。Join和Split相配合,可用于擴充控件TAG屬性的傳遞數量;在不定參數的傳遞時,可使代碼看起來更簡潔。
下面只是它們配合的示例,并不是這兒真有必要這樣做:
Sub aMain()
Dim arr(1 To 2), s$
arr(1) = 1: arr(2) = 2
s = Join(arr, ",")
Debug.Print Myadd(s)
End Sub
Function Myadd(ByVal s As String)
Dim arr, x
arr = Split(s, ",")
For Each x In arr
Myadd = Myadd + Val(x)
Next x
End Function
Filter函數
返回一個下標從零開始的數組,該數組包含基于指定篩選條件的一個字符串數組的子集。
Filter(源數組,要搜索的字符串[,返回子串包含還是不包含要搜索字符串[,比較方式]])
如果在源數組中沒有發現與要搜索的字符串相匹配的值,Filter返回一個空數組。如果源數組是Null或不是一個一維數組,則產生錯誤。
注意是“包含”要搜索的字符串,而不是“等于”要搜索的字符串。這意味著,如果一數組元素為字符串“AB”,用“A”、“B”、“AB”中的任何一個去搜索(上面第三個參數為默認值True),都會作為新的數組的元素被返回。但這并不影響你創造成“包含”等同于“等于”的條件,或者數據本身就符合這一要求的條件。在“包含”等同于“等于”的數組中,我們可以用下面的辦法來判斷一個字符串是否屬于某個數組。
If UBound(Arr) = UBound(Filter(Arr, "要找的字符串", False)) Then ‘說明在數組Arr中找不到