ある文字列について、特定文字以外が含まれている場合に取り除く関数
正規表現を使わない書き方。
例えば「ある文字列について、半角英数以外の文字を削除したい」という場合などに。
'* '* StrFilter '* ある文字列について、特定文字以外が含まれている場合に取り除く(もしくは置換する)関数 '* '* [in] sStr 対象文字列 '* sInstead 置換する文字(指定がなければ空、つまり特定文字以外を削除する) '* [out] 処理後の文字列 '* Private Function StrFilter(ByVal sStr As String, Optional ByVal sInstead As String = "") Dim i As Long Dim sFilter As String ' フィルタ文字列(含まれてよい文字をすべて記載) sFilter = "abcdefghijklmnopqrstuvwxyz0123456789" ' 対象文字列を1文字ずつ順番に参照 StrFilter = "" For i = 1 To Len(sStr) If InStr(sFilter, Mid(sStr, i, 1)) Then StrFilter = StrFilter & Mid(sStr, i, 1) Else StrFilter = StrFilter & sInstead End If Next End Function
呼び出し元は例えばこんな感じ。
' 「bchoge1」が表示される Debug.Print StrFilter2("Abc_hoge_1") ' 「*bc*hoge*1」が表示される Debug.Print StrFilter2("Abc_hoge_1", "*")