我想用VB实现同时替换多个字符串,注意是数万个字符批量替换! 使用replace只能做到一次替换一个字符串

2024-11-24 16:01:45
推荐回答(5个)
回答1:

我觉得这个问题要考虑的情况还是比较多的,楼主是要“用VB实现同时替换多个字符串”,既然是字符串,不单是楼主示例中的“我你”互换,这是一对一互换,还要考虑多对一,一对多的互换。比如“我们的”换成“我的”,“河流”换成“江河湖海”等等,这才是一个完善的函数....
说到替换可能首先想到的就是replac,如果用这个函数,我的思路是要声明3个数组:源字符串数组,替换字符串数组,关键字数组....
前二个数组楼主应该已经是有了,还要声明一个关键字数组,下标与前进二个数组等长,这个数组元素的原则就是字符+不重复的的数字,并保证其在原文章中不存在...
先按源字符串数组中元素的长度排序,这是为了保证长字符串先替换,短字符串后替换,避免重复和遗漏替换....先循环数组将源字符串全部替换成对应的关键字,再循环将关键字替换成要替换字符串....
看起来这个方法效率不是很高,但要高效的方法不简单......一时也想不出

回答2:

百度一下 VB多关键字同时替换,第一个就是我写的,效率比多个replace快,而且不会出现重复替换现象(比如要把a换成b ,b换成a,不管怎么设优先级都是不能直接replace的)

回答3:

你已经读取字符串数组了吧
用循环体执行replace 即可
即便你是写一个独立函数,也还是要用循环体执行replace

很方便的

回答4:

就事论事:

"我亲爱的老公看你的"

用"我"或者"你",作为分隔符解析成数组,在数组中替换未作为分隔符的内个字符就可以了吧

回答5:

决对好用的,可以任意多个字符同时转换
下面直接复制到你的代码里就可以用,我用的过程,直接在你的源字符串内改动
/////////////////////////////////////////////////////////////////////
Private Sub 换字符(源字符串 As String, ParamArray 转换表()) '转换表格式为 "我->你"
Dim L As String, R As String, i As Integer
For i = 0 To UBound(转换表)
If Len(转换表(i)) = 4 Then
If InStr(转换表(i), "->") Then
L = L & Left(转换表(i), 1)
R = R & Right(转换表(i), 1)
Else
If InStr(转换表(i), "<-") Then
R = R & Left(转换表(i), 1)
L = L & Right(转换表(i), 1)
Else
MsgBox "你输入的格式不对,应为 " & vbCrLf & _
"你->我" & " 或者 " & "你<-我"
End If
End If
End If
Next
Dim k As Long, s As String, j As Long
For j = 1 To Len(源字符串)
s = Mid(源字符串, j, 1)
k = InStr(L, s)
If k Then Mid(源字符串, j, 1) = Mid(R, k, 1)
Next
End Sub
/////////////////////////////////////////////////////////////////////
下面是调用方法
Dim s As String
s = "你找我做什么"
Print s
换字符 s, "我->你", "我<-你" ''后面可以加任意个 ^_^
Print s