修正されたバージョン:
Option Explicit
Public Function Clean(ByVal Text As String)
Dim Chars As Variant
Dim Replaced As Variant
Chars = Array("\", "/", ":", "*", "?", """", "<", ">", "|")
For Each Replaced In Chars
Text = Replace(Text, Replaced, "")
Next
Clean = Text
End Function
一般的にパフォーマンスの高いバージョン:
Option Explicit
Public Function Clean(ByVal Text As String)
Dim Chars As Variant
Dim RepIndex As Long
Chars = Array("\", "/", ":", "*", "?", """", "<", ">", "|")
For RepIndex = 0 To UBound(Chars)
Text = Replace$(Text, Chars(RepIndex), "")
Next
Clean = Text
End Function
バリアントを理解することは重要であり、「$」タイプの装飾が接尾辞として付けられた文字列タイプのバージョンではなく、文字列関数のバリアントバージョンを使用することを特に意識する必要があります。
ほとんどの場合、パフォーマンスコストのため、可能な場合はバリアントを避けたいと思うでしょう。
このバージョンはおそらくさらに優れたパフォーマンスを発揮します。
Option Explicit
Public Function Clean(ByVal Text As String)
Const Chars As String = "\/:*?""<>|"
Dim RepIndex As Long
For RepIndex = 1 To Len(Chars)
Text = Replace$(Text, Mid$(Chars, RepIndex, 1), "")
Next
Clean = Text
End Function
VB6には「Char」タイプはなく、変数宣言の初期化構文もありません。