这可是我现给你写的呀,回去看看是不是好用。Private Sub Form_Load()
Dim tAStr As String
tAStr = "幸福中是个大坏蛋!幸福中是个坏孩子!幸福中是个淘气包!"
Text1.Text = StringInstrSwap(tAStr, "幸福中", "小狗")
End SubFunction StringInstrSwap(ByVal pString As String, ByVal pSwapSurStr As String, ByVal pSwapDesStr As String) As String
'StringInstrSwap函数
'语法:[tOutStr]=StringInstrSwap(pString, pSwapSurStr, pSwapDesStr)
'功能:将字符串中所有指定字符串替换成另一字符串。
'参数:pString 必要参数,被替换的字符串。假如为空则返回原字符串(空字符串)。
' pSwapSurStr 必要参数,替换部分的原字符串。假如为空字符则不进行任何替换。
' pSwapDesStr 必要参数,替换部分的新字符串。假如为空字符则进行删除原字符串操作。
'返回:tOutStr 替换完成的字符串。
Dim tOutStr As String
Dim tStrLen As Long
Dim tTempStrForth As String
Dim tTempStrForthLen As Long
Dim tTempStrBack As String
Dim tTempStrBackEnd As Long
Dim tSwapSurStrLen As Long
Dim tSwapSurStrOn As Long
Dim tLoop As Long
Dim tExitLoop As Boolean
tOutStr = pString
tStrLen = Len(tOutStr)
tSwapSurStrLen = Len(pSwapSurStr)
If Not CBool(tStrLen) Then Exit Function
For tLoop = 1 To tStrLen
tSwapSurStrOn = InStr(tOutStr, pSwapSurStr)
tExitLoop = (tLoop > Len(tOutStr)) Or (Not CBool(tSwapSurStrOn)) Or Not CBool(tSwapSurStrLen)
If tExitLoop Then Exit For
tTempStrForthLen = tSwapSurStrOn - 1
If CBool(tTempStrForthLen) Then
tTempStrForth = Left(tOutStr, tTempStrForthLen)
Else
tTempStrForth = ""
End If
tTempStrBackEnd = tSwapSurStrOn + tSwapSurStrLen
If tTempStrBackEnd < tStrLen Then
tTempStrBack = Mid(tOutStr, tTempStrBackEnd)
Else
tTempStrBack = ""
End If
tOutStr = tTempStrForth & pSwapDesStr & tTempStrBack
Next
StringInstrSwap = tOutStr
End Function
Dim tAStr As String
tAStr = "幸福中是个大坏蛋!幸福中是个坏孩子!幸福中是个淘气包!"
Text1.Text = StringInstrSwap(tAStr, "幸福中", "小狗")
End SubFunction StringInstrSwap(ByVal pString As String, ByVal pSwapSurStr As String, ByVal pSwapDesStr As String) As String
'StringInstrSwap函数
'语法:[tOutStr]=StringInstrSwap(pString, pSwapSurStr, pSwapDesStr)
'功能:将字符串中所有指定字符串替换成另一字符串。
'参数:pString 必要参数,被替换的字符串。假如为空则返回原字符串(空字符串)。
' pSwapSurStr 必要参数,替换部分的原字符串。假如为空字符则不进行任何替换。
' pSwapDesStr 必要参数,替换部分的新字符串。假如为空字符则进行删除原字符串操作。
'返回:tOutStr 替换完成的字符串。
Dim tOutStr As String
Dim tStrLen As Long
Dim tTempStrForth As String
Dim tTempStrForthLen As Long
Dim tTempStrBack As String
Dim tTempStrBackEnd As Long
Dim tSwapSurStrLen As Long
Dim tSwapSurStrOn As Long
Dim tLoop As Long
Dim tExitLoop As Boolean
tOutStr = pString
tStrLen = Len(tOutStr)
tSwapSurStrLen = Len(pSwapSurStr)
If Not CBool(tStrLen) Then Exit Function
For tLoop = 1 To tStrLen
tSwapSurStrOn = InStr(tOutStr, pSwapSurStr)
tExitLoop = (tLoop > Len(tOutStr)) Or (Not CBool(tSwapSurStrOn)) Or Not CBool(tSwapSurStrLen)
If tExitLoop Then Exit For
tTempStrForthLen = tSwapSurStrOn - 1
If CBool(tTempStrForthLen) Then
tTempStrForth = Left(tOutStr, tTempStrForthLen)
Else
tTempStrForth = ""
End If
tTempStrBackEnd = tSwapSurStrOn + tSwapSurStrLen
If tTempStrBackEnd < tStrLen Then
tTempStrBack = Mid(tOutStr, tTempStrBackEnd)
Else
tTempStrBack = ""
End If
tOutStr = tTempStrForth & pSwapDesStr & tTempStrBack
Next
StringInstrSwap = tOutStr
End Function
tTempFileName=替换操作后的文件。
tSurStr=要替换的字符。
tDesStr=替换的字符。tFileNumberSave=FreeFile
Open tFileName For Output As #tFileNumberSave
tFileNumberLoad=FreeFile
Open tTempFileName For Input As #tFileNumberLoadDo
Line Input #tFileNumberLoad,tLoadStr
tSaveStr=StringInstrSwap(tLoadStr,tSurStr,tDesStr)
Print #tFileNumberSave,tSaveStr
[DoEvents] '如果文件很大就加这句。或者下面这个样子尖括号部分为自动响应程序。tStepTime是规定的响应时间。
<If tAddTime-Timer>tStepTime Then >
< tAddTime=Timer>
< DoEvents>
<End If>
Loop Until Eof(tFileNumberLoad)Close #FileNumberLoad
Close #FileNumberSave
2、示例程序。
3、测试文本SY03.TXT的内容。
第一部分:完整的函数代码。Function StringAryPutToFile(ByVal pFileName As String, ByRef pStringAry() As String)
'| StringAryPutToFile函数
'| 语法:StringAryPutToFile pFileName, pStringAry()
'| 功能:将字符串数组按照行顺序保存成文本文件。
'| 参数:pFileName 必要参数,储存文本的文件名。如果不存在则将创建一个。
'| pStringAry() 必要参数,储存文本信息的字符串数组。必须是个动态数组。
Dim tFileNumber As Integer
Dim tNewBound As Long
Dim tLoop As Long
Dim tLoopOn As Long
Dim tLoopEnd As Long
tFileNumber = FreeFile
Open pFileName For Output As #tFileNumber
tLoopOn = LBound(pStringAry): tLoopEnd = UBound(pStringAry)
For tLoop = tLoopOn To tLoopEnd
Print #tFileNumber, pStringAry(tLoop)
Next
Close #tFileNumber
End FunctionFunction StringAryGetByFile(ByVal pFileName As String, pStringAry() As String)
'| StringAryGetByFile函数
'| 语法:StringAryGetByFile pFileName, pStringAry()
'| 功能:将文本文件按照行顺序读到字符串数组中。
'| 参数:pFileName 必要参数,储存文本的文件名。如果不存在则将创建一个。
'| pStringAry() 必要参数,储存文本信息的字符串数组。必须是个动态数组。
'| 注意:在使用该函数前建议检测文件是否存在,否则将生成意外的空文件。
Dim tFileNumber As Integer
Dim tNewBound As Long
Dim tReadStr As String
tFileNumber = FreeFile
Open pFileName For Input As #tFileNumber Do Until EOF(tFileNumber)
ReDim Preserve pStringAry(tNewBound)
Line Input #tFileNumber, tReadStr
pStringAry(tNewBound) = tReadStr
tNewBound = tNewBound + 1
Loop
Close #tFileNumber
End FunctionFunction StringAryInstrsSwapToAll(ByRef pStringAry() As String, ByVal pSwapSurStr As String, ByVal pSwapDesStr As String) As Long
'| StringAryInstrsSwapToAll函数
'| 语法:StringAryInstrsSwapToAll pStringAry() ,pSwapSurStr ,pSwapDesStr
'| 功能:对一个字符串数组进行替换操作。将替换掉所有找到的指定字符串为新的字符串。
'| 参数:pStringAry() 必要参数,进行替换操作的字符串数组。
'| pSwapSurStr 必要参数,被查找的准备替换的字符串。
'| pSwapDesStr 必要参数,替换目的字符串的新字符串。
Dim tLoop As Long
Dim tLoopOn As Long
Dim tLoopEnd As Long
tLoopOn = LBound(pStringAry)
tLoopEnd = UBound(pStringAry)
For tLoop = tLoopOn To tLoopEnd
pStringAry(tLoop) = StringInstrSwapToAll(pStringAry(tLoop), pSwapSurStr, pSwapDesStr)
Next
End FunctionFunction StringInstrSwapToAll(ByVal pString As String, ByVal pSwapSurStr As String, ByVal pSwapDesStr As String) As String
'| StringInstrSwapToAll函数
'| 语法:[tOutStr]=StringInstrSwapToAll(pString, pSwapSurStr ,pSwapDesStr )
'| 功能:对一个字符串进行替换操作。将替换掉所有找到的指定字符串为新的字符串。
'| 参数:pString 必要参数,进行替换操作的字符串。
'| pSwapSurStr 必要参数,被查找的准备替换的字符串。
'| pSwapDesStr 必要参数,替换目的字符串的新字符串。
'| 返回:tOutStr 替换后的字符串。
Dim tOutStr As String
Dim tTempStr As String
Dim tFindSurStrOn As Long
tTempStr = pString
tFindSurStrOn = 1
Do
tOutStr = tTempStr
tTempStr = StringInstrSwap(tTempStr, pSwapSurStr, pSwapDesStr, tFindSurStrOn) Loop While CBool(tFindSurStrOn)
StringInstrSwapToAll = tOutStr
End FunctionFunction StringInstrSwap(ByVal pString As String, ByVal pSwapSurStr As String, ByVal pSwapDesStr As String, Optional ByRef pFindSurStrOn As Long = 1) As String
'| StringInstrSwap函数
'| 语法:[tOutStr]=StringInstrSwap(pString, pSwapSurStr, pSwapDesStr, pFindSurStrOn)
'| 功能:对一个字符串进行替换操作。将替换掉第一个找到的指定字符串为新的字符串。
'| 参数:pString 必要参数,进行替换操作的字符串。
'| pSwapSurStr 必要参数,被查找的准备替换的字符串。
'| pSwapDesStr 必要参数,替换目的字符串的新字符串。
'| pFindSurStrOn 可选参数,该参数有三个作用:
'| (1)指定替换开始的位置,单位为字。默认值为1
'| (2)替换操作结束后返回该次操作的结束位置。并可以作为下一次替换的开始。
'| (3)替换操作的动作状态。如果返回0表示不再有可以替换的字符串了。
'| ----------------------------------------------------------------------------
'| 该参数的位置返回参数是为了防止“死锁”现象而设置的。
'| 当pSwapDesStr中包含有pSwapSurStr的时候,如果每次都从第一
'| 个位置开始将产生死锁。所以,当准备替换一个字符串的所有指
'| 定字符串,必须从pFindSurStrOn返回位置步进到下一个位置。
'| ----------------------------------------------------------------------------
'| 返回:tOutStr 替换后的字符串。 Dim tOutStr As String
Dim tStrLen As Long
Dim tTempStrForth As String
Dim tTempStrForthLen As Long
Dim tTempStrBack As String
Dim tTempStrBackEnd As Long
Dim tSwapSurStrLen As Long
Dim tSwapSurStrOn As Long
tStrLen = Len(pString)
If CBool(tStrLen) Then
tSwapSurStrLen = Len(pSwapSurStr)
If CBool(tSwapSurStrLen) And (tSwapSurStrLen <= tStrLen) Then
tSwapSurStrOn = InStr(pFindSurStrOn, pString, pSwapSurStr)
If CBool(tSwapSurStrOn) Then
tOutStr = pString
'| GetForthString
tTempStrForthLen = tSwapSurStrOn - 1
If CBool(tTempStrForthLen) Then
tTempStrForth = Left(tOutStr, tTempStrForthLen)
End If
'| GetBackString
tTempStrBackEnd = tSwapSurStrOn + tSwapSurStrLen
If tTempStrBackEnd < tStrLen Then
tTempStrBack = Mid(tOutStr, tTempStrBackEnd)
End If
'| GetLinkString
tOutStr = tTempStrForth & pSwapDesStr & tTempStrBack
End If
End If
End If
pFindSurStrOn = (tSwapSurStrOn + tSwapSurStrLen) * (1 And CBool(tSwapSurStrOn))
StringInstrSwap = tOutStr
End Function
Dim tStrAry() As String
ReDim tStrAry(0)
StringAryGetByFile "SY03.txt", tStrAry()
StringAryInstrsSwapToAll tStrAry(), "小仙妹", "阿道夫·希特勒"
StringAryInstrsSwapToAll tStrAry(), "辽东", "柏林"
StringAryInstrsSwapToAll tStrAry(), "郑伊健", "迈克·阿瑟"
StringAryPutToFile "SY02.txt", tStrAry()
End Sub第三部分:测试文件SY03.TXT的内容。小仙妹 年表166年 小仙妹(字:文正)诞生。184年 1月,是以辽东为根据地的君主。把郑伊健任命为军师。4月,小仙妹统治的辽东遭遇洪水。小仙妹军占领北平。把陈琳任命为辽东的太守。10月,小仙妹军占领蓟。把刘德华任命为蓟的太守。把重视内政作为蓟的都市方针。185年 1月,被任命为州牧,成为幽州州牧。3月,在北平找到严纲。在北平找到韩当。在北平找到魏攸。在北平找到单经。在北平发现张纯,并录用成功。4月,北方的民众归顺小仙妹,并献上山岳骑。小仙妹军占领渤海。把轩辕公孙任命为渤海的太守。把重视内政作为渤海的都市方针。10月,在与张角军进行的平原之战中,作为小仙妹军的主帅指挥战斗。占领城寨。在小仙妹军对张角军的战斗中,小仙妹军获胜,并占领平原。把刘焉任命为北平的太守。186年 4月,小仙妹军占领邺。把田楷任命为渤海的太守。小仙妹军占领晋阳。把卢植任命为蓟的太守。把重视内政作为邺的都市方针。把重视内政作为晋阳的都市方针。把木村拓哉任命为渤海的太守。7月, 小仙妹统治的都市获得丰收。组成第2军团,任命木村拓哉为军团长。10月,小仙妹军占领上党。把公孙瓒任命为晋阳的太守。把重视内政作为上党的都市方针。