コードのポスト マイグレーションの一環として、多くのファイルを処理したいと考えています。移行ツールは RegEx を処理でき、以下のように記述します:
'# Replace ".Columns(", ".Columns.Item(
"
)
私たちの要件の NullString 単語を二重引用符に置き換えたい、つまり ""
例 Optional ByVal strID2 As String = NullString
は
Optional ByVal strID2 As String = ""になる必要があります
これは、VB6 の NullString がクラス変数になり、関数宣言では定数である必要があるため必要です。
したがって、以下の基準のいずれかを持つ正規表現が必要です。
- 関数宣言にあることを確認してください。つまり、「関数」という単語があり、その名前があり、角かっこ「(」を開きます。次に、[= NullString] が出現する場合は、閉じ角かっこ「)」を押すまで [= ""] に置き換える必要があります。宣言は複数行である可能性があります。
- その Optional パラメータかどうかを確認してください。したがって、単語「Optional」、「As String = NullString」に一致し、NullString を「」に置き換えます。
2 つのうちの 1 つを基準として使用できますが、RegEx を作成できません。以下は私のサンプルファイルで、各行に必要なものを説明しました。
私のサンプルファイルの内容
Line 1 :Public Function getAllAddresses(ByVal lngObjectType As String, ByVal strID1 As String, Optional ByVal strID2 As String = NullString, Optional ByVal strID3 As String = NullString, Optional ByVal blnExtraAddresses As Boolean = False, Optional ByRef objDataRequest As CDataRequest = Nothing) As ADORecordset
Line 2 : Dim s as String
Line 3 :s = NullString
Line 4 (ブランク):
Line 5 :Public Function getDefaultPaymentAddress(ByVal lngObjectType As Integer, ByVal strID1 As String, ByVal strID2 As String, Optional ByRef objDataRequest As CDataRequest = Nothing) As typAddress
Line 6 :Public Function myfunc(Optional ByVal strID2 As String = NullString, _
Line 7 : Optional ByVal strID3 As String = NullString, _
Line 8 : Optional ByVal blnExtraAddresses As Boolean = False, _
Line 9 : Optional ByRef objDataRequest As CDataRequest = Nothing) As String
Line 10 :ファイルの終わりまでの'Some code comments with = NullString
行:
各行の期待される出力:
- 行 1 : 大きな行であるため、NullString が引用符で置き換えられた宣言全体が出力されます。つまり、"" です。
- 2行目:そのまま
- 3行目: そのまま [ NullStringは置き換えてはいけないことに注意]
- Line 4 : そのまま、つまり空白
- 5行目:そのまま。ここには NullString がないため、一致しません
- 6 行目から 9 行目 : 2 つの NullString を二重引用符で置き換えます (6 行目と 7 行目)
- 10行目:そのまま。これは単なるコメントです。
のようなものがあるかもしれませIf myVar = NullString Then
んが、一致して置き換えられるべきではありません。
助けてくれてありがとう。
よろしく、
ニック