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

比如,我有字符串"我亲爱的老公看你的",我想把"我"替换成"你",把"你"替换成"我",如果用replace做的话,按照上面的顺序得到的结果是"我亲爱的老公看我的",而我... 比如,我有字符串"我亲爱的老公看你的" ,我想把"我"替换成"你",把"你"替换成"我",如果用replace做的话,按照上面的顺序得到的结果是"我亲爱的老公看我的",而我实际上想要的效果是"你亲爱的老公看我的",明白了吗?
希望能给出具体的函数,我可以直接套用的!!我已经把需要替换的字符都放在一个文本文件中,用VB读取写入一个数组中了!
我只是举个简单的比方,几万个字符啊,是需要具体的函数来实现的
展开
 我来答
百度网友01b802e
2010-09-26 · TA获得超过338个赞
知道小有建树答主
回答量:192
采纳率:0%
帮助的人:307万
展开全部
我觉得这个问题要考虑的情况还是比较多的,楼主是要“用VB实现同时替换多个字符串”,既然是字符串,不单是楼主示例中的“我你”互换,这是一对一互换,还要考虑多对一,一对多的互换。比如“我们的”换成“我的”,“河流”换成“江河湖海”等等,这才是一个完善的函数....
说到替换可能首先想到的就是replac,如果用这个函数,我的思路是要声明3个数组:源字符串数组,替换字符串数组,关键字数组....
前二个数组楼主应该已经是有了,还要声明一个关键字数组,下标与前进二个数组等长,这个数组元素的原则就是字符+不重复的的数字,并保证其在原文章中不存在...
先按源字符串数组中元素的长度排序,这是为了保证长字符串先替换,短字符串后替换,避免重复和遗漏替换....先循环数组将源字符串全部替换成对应的关键字,再循环将关键字替换成要替换字符串....
看起来这个方法效率不是很高,但要高效的方法不简单......一时也想不出
狂族魔帝
2014-12-21 · TA获得超过367个赞
知道小有建树答主
回答量:596
采纳率:0%
帮助的人:399万
展开全部
百度一下 VB多关键字同时替换,第一个就是我写的,效率比多个replace快,而且不会出现重复替换现象(比如要把a换成b ,b换成a,不管怎么设优先级都是不能直接replace的)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
peaset
2010-09-25 · TA获得超过2148个赞
知道大有可为答主
回答量:3315
采纳率:0%
帮助的人:0
展开全部
你已经读取字符串数组了吧
用循环体执行replace 即可
即便你是写一个独立函数,也还是要用循环体执行replace

很方便的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
悟风翰k
2010-09-25 · TA获得超过3139个赞
知道小有建树答主
回答量:1107
采纳率:50%
帮助的人:405万
展开全部
就事论事:

"我亲爱的老公看你的"

用"我"或者"你",作为分隔符解析成数组,在数组中替换未作为分隔符的内个字符就可以了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
棘棘芽
2010-09-25 · TA获得超过563个赞
知道小有建树答主
回答量:608
采纳率:100%
帮助的人:549万
展开全部
决对好用的,可以任意多个字符同时转换
下面直接复制到你的代码里就可以用,我用的过程,直接在你的源字符串内改动
/////////////////////////////////////////////////////////////////////
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式