VB6・VBA関数メモ:Replace関数

Replace関数についてメモしておきます。
文字列置換を行う際に使用します。


概要

Replace(expression, find, replace, [start], [count], [compare])
機能 対象文字列(expression)から検索文字列(find)を置換文字列(replace)に置換
戻り値 置換した文字列
(startを指定した場合は、指定位置から末尾までを置換した文字列)


引数

引数名説明
expression対象文字列
find 検索文字列
replace 置換文字列
start (省略可)
検索の開始位置
省略時は文字列の先頭から検索
count (省略可)
置換する回数
compare (省略可)
比較モードの定数


引数:定数

引数:compare
定数名説明使用例出力
vbUseCompareOption-1Option Compare ステートメントの設定を使用Replace("abcde", "cd", "XY", , ,vbUseCompareOption)abXYe
vbBinaryCompare0(規定値)
バイナリモード
※大文字と小文字、半角と全角、ひらがなとカタカナを区別する
Replace("abcde", "cd", "XY", , ,vbBinaryCompare)abXYe
vbTextCompare1テキストモード
※大文字と小文字、半角と全角、ひらがなとカタカナを区別しない
Replace("abcde", "cd", "XY", , ,vbTextCompare)abXYe
vbDatabaseCompare2(Accessのみ)
DBに格納されている設定に基づいて比較
Replace("abcde", "cd", "XY", , ,vbDatabaseCompare)abXYe


使用例

説明記述例出力
全ての検索文字を置換 Replace("abc abc", "bc", "XY") aXY aXY
3文字目から置換 Replace("abc abc", "bc", "XY", 3) c aXY
1回のみ置換 Replace("abc abc", "bc", "XY", , 1) aXY abc
大文字・小文字を区別して置換
(置換できない例)
Replace("abcde", "CD", "XY") abcde
ひらがな・半角カタカナを区別しないで置換 Replace("あいう", "イウ", "iu", , , vbTextCompare) あiu


応用例

説明記述例出力
後ろから2回のみ置換
(InStrRev関数との組み合わせて後ろから1回ずつ置換)
Dim pos      As Long
Dim cnt      As Long
Dim str      As String

'検索対象文字列
Const TARGETSTR As String = "abc abc abc"
'検索文字列
Const SEARCHSTR As String = "bc"
'置換文字列
Const REPLACESTR As String = "XY"
'置換回数
Const REPLACECNT As Long = 2

'初期化
pos = Len(TARGETSTR) + 1
cnt = 0
str = TARGETSTR

'ループして検索
Do
    '末尾から検索
    pos = InStrRev(TARGETSTR, SEARCHSTR, pos - 1)
    
    '検索できた場合置換
    If pos > 0 Then
        '検索位置の文字列のみ置換
        str = Left(str, pos - 1) & _
              Replace(str, SEARCHSTR, REPLACESTR, pos, 1)
        cnt = cnt + 1
    End If
    
Loop While pos > 0 And cnt < REPLACECNT

'検索結果出力
Debug.Print str
abc aXY aXY


コメント
コメントする








    
この記事のトラックバックURL
トラックバック