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