文字列操作(3)

array Array(vanum,num,...)
引数列を配列に変換します
Dim a
a = Array("First","Second","Third")
MsgBox a(2)

array Split(str1,str2)
PerlのSplitに似ている
文字列str1を区切り文字str2で区切って配列を作る。
Dim a As Variant
a = Split("Excel,Word", ",")
aは動的配列だがDim a() As Variantだとエラーになる。

str Join(array[,str])
配列を区切り文字列で結合して文字列にする。
区切り文字を省略時は空白一文字。
Dim a(1)
a(0)="Excel"
a(1)="Word"
Debug.Print Join(a,",")
結果は
Excel,Word
PerlのJoinに似ているがVBAの配列の使い勝手の悪さ故、使い勝手は良くない。
Dim a(3)
a(0)="Excel"
a(1)="Word"
Debug.Print Join(a,",")
結果は
Excel,Word,,
という残念な結果になる。
これを回避するにはRedimで修正が必要。

str Replace(str1,str_find,str_replace[,start[,count[,compare]]])
str1の中の文字列str_findを探してその部分をstr_replaceで置き換える。
startは検索開始位置、countは置き換える回数、compareは文字列を比較するモード。
compare
数値意味
0テキストモード比較。大文字と小文字の区別無し
1バイナリモード比較。

array Filter(ary,str[,bool[,compare]])
boolを指定しないか、Trueの時:配列aryの中から、strを含む要素を抜き出した配列を作って返す。
boolがFalseの時:配列aryの中から、strを含まない要素を抜き出した配列を作って返す。
compareはReplaceと同じ定義
Perlでいうgrepに相当するが、正規表現は使えないのでかなり使い勝手は悪い。

比較的複雑な機能の文字列操作関数です。
Perl等に刺激を受けて作ったとみられる関数ですが、VBAの言語仕様の悪さからあまり使い勝手の良くない(使用用途が限定される)残念なものになっています。
comments (0)

コメント

Comment Form