2012年5月13日日曜日

[VBScript] Filter関数


■構文
Filter(sourcesrray, match[, include[, compare]])

■説明
検索対象(配列)と検索文字列を指定することでマッチした配列要素を配列に格納して返します。
マッチしなかった場合空の配列を返します。
第一引数:検索対象の配列を指定します。
第二引数:検索する文字列を指定します。
第三引数:(省略可能)検索にマッチしたデータを返すか、検索にマッチしなかったデータを返すか指定します。
True→マッチしたデータ。False→マッチしなかったデータ。省略時は、True
第四引数:(省略可能)文字列の比較モードを指定します。
定数説明
vbUseCompareOption-1Option Compareステートメントの設定を仕様して比較を行います
vbBinaryCompare0バイナリモードの比較を行います
vbTextCompare1テキストモードの比較を行います
vbDatabaseCompare2MicrosoftAccessの場合のみ有効。データベースに格納されている設定に基づいて比較を行います

■サンプルコード
Option Explicit

Dim FoodList
Dim SelectList
Dim i

'カテゴリ(果物or野菜or飲料)と食べ物がCSVでセットになった
'データが格納されている配列があったとします。
FoodList = Array("果物,りんご", "野菜,だいこん", "飲料,お茶", _
                 "果物,みかん", "野菜,ぴーまん", "飲料,お酒")



'■果物だけ抽出してみる
SelectList = Filter(FoodList, "果物")

'結果を表示
For i = 0 To UBound(SelectList)
    '果物,りんご
    '果物,みかん  が表示される
Wscript.Echo SelectList(i)
Next

Wscript.Echo "---"



'■野菜だけ抽出してみる
SelectList = Filter(FoodList, "野菜")

'結果を表示
For i = 0 To UBound(SelectList)
    '野菜,だいこん
    '野菜,ぴーまん  が表示される
    Wscript.Echo SelectList(i)
Next

Wscript.Echo "---"



'■飲料以外を抽出してみる(第三引数をFalse)
SelectList = Filter(FoodList, "飲料", False)

'結果を表示
For i = 0 To UBound(SelectList)
    '果物,りんご
    '野菜,だいこん
    '果物,みかん
    '野菜,ぴーまん が表示される
    Wscript.Echo SelectList(i)
Next


'■マッチしない文字列の場合
SelectList = Filter(FoodList, "定食")

Wscript.Echo UBound(SelectList) '-1

■サンプルコード
Option Explicit

Dim DataList
Dim SelectList
Dim i

DataList = Array("aa", "aaa", "AA", "AAA")

SelectList = Filter(DataList, "aa", True, vbBinaryCompare)
For i = 0 To UBound(SelectList)
    'aa
    'aaa が表示される
    Wscript.Echo SelectList(i)
Next


Wscript.Echo "---"


SelectList = Filter(DataList, "aa", True, vbTextCompare)
For i = 0 To UBound(SelectList)
    'aa
    'aaa
    'AA
    'AAA が表示される
    Wscript.Echo SelectList(i)
Next

0 件のコメント: