我想在我们的代码迁移后处理大量文件。迁移工具可以处理正则表达式,我们编写如下内容:
'# Replace ".Columns(", ".Columns.Item("
这将所有出现的 ".Columns(" 替换为 ".Columns.Item("。
作为一个我们的要求我想用双引号替换 NullString 单词,即“”
例如 Optional ByVal strID2 As String = NullString
应该成为
Optional ByVal strID2 As String = “”
这是必需的,因为 VB6 中的 NullString 现在正在成为一个类变量,而在函数声明中它需要是一个常量。
所以,我需要一个具有以下标准之一的正则表达式:
- 确保它在函数声明中,即有单词“Function”,然后是它的名称并打开一个括号“(”。然后任何出现的 [= NullString] 都应该替换为 [= “”] 直到我们点击右括号“)”,如声明可以在多行上。
- 只要看看它的可选参数。因此,匹配单词“Optional”,然后匹配“As String = NullString”,并将 NullString 替换为“”。
我可以使用 2 之一作为标准,但无法编写 RegEx。下面是我的示例文件,我已经解释了我想要的每一行。
我的示例文件内容
第 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
第 2 行:Dim s as String
第 3行:s = NullString
第 4 行(空白):
第 5行:Public Function getDefaultPaymentAddress(ByVal lngObjectType As Integer, ByVal strID1 As String, ByVal strID2 As String, Optional ByRef objDataRequest As CDataRequest = Nothing) As typAddress
第 6行:Public Function myfunc(Optional ByVal strID2 As String = NullString, _
第 7行: Optional ByVal strID3 As String = NullString, _
第 8行: Optional ByVal blnExtraAddresses As Boolean = False, _
第 9行: Optional ByRef objDataRequest As CDataRequest = Nothing) As String
第 10行:直到文件末尾的'Some code comments with = NullString
更多行:
每行的预期输出:
- 第 1 行:作为一条大行,只需输出整个声明,并将 NullString 替换为引号,即“”。
- 第 2 行:原样
- 第 3 行:原样 [注意 NullString 不应被替换]
- 第 4 行:原样,即空白
- 第 5 行:原样。这里没有 NullString 所以不匹配
- 第 6 到 9 行:2 个 NullString 替换为双引号(第 6 和 7 行)
- 第 10 行:原样。这只是一个评论。
我可能有类似的东西If myVar = NullString Then
,但它不应该被匹配和替换。
在此先感谢您的帮助。
问候,
尼克