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