|
楼主 |
发表于 2007-3-13 14:35
|
显示全部楼层
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函数的设置值相同。 |
|