◆ [VBScript] 指定した要素の配列内インデックスを取得する
どーもボキです。

配列内の要素のインデックスを調べたいとき、For文でひとつひとつ確認するのはメンドクサイ。
なので作った。指定した要素の配列内インデックスを取得する関数を。

考え方は、
1.Join()で、配列を一つの文字列に変換する
2.Left()で、1の文字列から、インデックスを得たい文字の位置までを抜き出す
3.Split()で、2の文字列を再度配列に変換し、要素数を取得する
 → 要素のインデックス
ってな感じ。

' 配列内の該当インデックスを返す 見つからなければ GetIndex=-1
GetIndex_Delimiter = ","
Function GetIndex(ByRef CheckArray,CheckValue)
Dim s,t,idx,d

GetIndex = -1
If Not IsArray(CheckArray) Then Exit Function
d = GetIndex_Delimiter

s = d & Join(CheckArray,d) & d ' 先頭&最後データのInStr検出抜け回避
t = d & CheckValue & d ' 〃
idx = InStr(s,t)
If idx = 0 Then Exit Function ' CheckValueなし
If idx = 1 Then :GetIndex = 0 :Exit Function

s = Left(s,idx-1)
GetIndex = UBound(Split(s,d))
End Function
※配列内に文字列が含まれ、かつその中に「,(半角カンマ)」が含まれる場合、この関数は、正常に動作しない。
 その場合は、GetIndex_Delimiter に適当な文字列を指定すること。
 VBScriptには引数へのOptionalオプション(なくてもよい引数)がないため、この方法にしている。
 引数にDelimiter入れて、毎回指定するってムダだし。
 また、GetIndex_Delimiter = "ここが区切り" とか、要素データとしてありえない文字列を指定すればいいんだけど、美しくないからやめた。
[PR]
by yozda | 2010-01-18 21:48 | プログラミング | Trackback | Comments(0)
トラックバックURL : http://yozda.exblog.jp/tb/9696239
トラックバックする(会員専用) [ヘルプ]
<< [日記] 晄太郎 と 優香 [VBScript] ラジオボ... >>