CloseFile
End Sub
----
二、替换单元类
---- 做为一个通用的工具,我们现在并不知道要将什么替换为什么,这些信息是要在使用者使用时告诉程
序的,这就需要将各种替换任务进行参数化,用最简单明确的方式描述出来。这里我们实现的个替换单元类
(
reUnit
),用它来接受参数并完成替换任务。
----
1、替换条件的描述及初始化
----
“
”
为了能在一次处理中,实现多种替换,定义一个 替换单元 类:
reUnit,来承担主要的替换任务。这
个类中定义了替换的条件:
Dim headChr As String
'启始符
Dim tailChr As String
'结束符
Dim reStr As String
'替换为
Dim mapObj as Object
'映射对象
---- 通过上面三个变量来描述替换条件:headChr 和 tailChr 代表检索的起点和终点,当 tailChr 为零
长时,表示只对某字符串进行替换。
reStr 是替换后的字符串,为零长时即表示清除。该类用下面两个函数来设
置上面的三个变量:
Public Sub Init(ByVal S As String)
headChr = EscStr(StrHead(S, ","))
tailChr = EscStr(StrHead(S, ","))
reStr = EscStr(S)
If Left(reStr,1)="@" Then
'第一个字符是"@",它所代表的是一个映射类
Set mapObj = CreateObject(Mid(reStr,2))
End If
End Sub
Private Function EscStr(ByVal S As String) As String
Dim h As Long
EscStr = ""
Do While Len(S) > 0
EscStr = EscStr & StrHead(S, "&")
If Len(S) > 0 Then
h = "&H" & StrHead(S, ";")
EscStr = EscStr & Chr(h)
End If
Loop
End Function
---- 函数 Init 接受一个字符串 S
“
” “
”
,其中应包含 起点 、 终点 和替换后的字符串,他们之间用逗号分隔。
“
为了能将非键盘字符加入其中,可以用
&HHHH;”的形式将任意字符插入其间,HHHH 表示一个十六进制数,通过
EscStr
函数来完成这种替代。
---- 这里需要说明的是,类中定义了一个 mapObj
“
变量,它是为了实现 特殊标识符之间的文字按照某种规
”
律进行转换 而设计的。因为这种规律性现在我们并不知道,我们只能在这里为今后留下的个接口,假设一个类实
现了某种规律的映射,并通过下面这样的函数来提供这种映射:
Public Function Map(Byval ss as String) as String
---- 我们规定,如果 reStr 的第一个字符是"@"的话,它所代表的就不是一直接替换为的字符串,而是的
个映射类的标识名,我们将通过
CreateObject 函数来建立这个对象,在替换时调用它的 Map
函数。
----
2、替换函数
---- 该类的 Replice 函数完成对字符串的替换任务,由于是对文件中的数据以一行为单位依次调用该函数
“
” “
”
的,所以要考虑到 起点 与 终点 不在同一行上的情况,所以首先定义一个标记变量: