我想用VB实现同时替换多个字符串,注意是数万个字符批量替换! 使用replace只能做到一次替换一个字符串
比如,我有字符串"我亲爱的老公看你的",我想把"我"替换成"你",把"你"替换成"我",如果用replace做的话,按照上面的顺序得到的结果是"我亲爱的老公看我的",而我...
比如,我有字符串"我亲爱的老公看你的" ,我想把"我"替换成"你",把"你"替换成"我",如果用replace做的话,按照上面的顺序得到的结果是"我亲爱的老公看我的",而我实际上想要的效果是"你亲爱的老公看我的",明白了吗?
希望能给出具体的函数,我可以直接套用的!!我已经把需要替换的字符都放在一个文本文件中,用VB读取写入一个数组中了!
我只是举个简单的比方,几万个字符啊,是需要具体的函数来实现的 展开
希望能给出具体的函数,我可以直接套用的!!我已经把需要替换的字符都放在一个文本文件中,用VB读取写入一个数组中了!
我只是举个简单的比方,几万个字符啊,是需要具体的函数来实现的 展开
10个回答
展开全部
我觉得这个问题要考虑的情况还是比较多的,楼主是要“用VB实现同时替换多个字符串”,既然是字符串,不单是楼主示例中的“我你”互换,这是一对一互换,还要考虑多对一,一对多的互换。比如“我们的”换成“我的”,“河流”换成“江河湖海”等等,这才是一个完善的函数....
说到替换可能首先想到的就是replac,如果用这个函数,我的思路是要声明3个数组:源字符串数组,替换字符串数组,关键字数组....
前二个数组楼主应该已经是有了,还要声明一个关键字数组,下标与前进二个数组等长,这个数组元素的原则就是字符+不重复的的数字,并保证其在原文章中不存在...
先按源字符串数组中元素的长度排序,这是为了保证长字符串先替换,短字符串后替换,避免重复和遗漏替换....先循环数组将源字符串全部替换成对应的关键字,再循环将关键字替换成要替换字符串....
看起来这个方法效率不是很高,但要高效的方法不简单......一时也想不出
说到替换可能首先想到的就是replac,如果用这个函数,我的思路是要声明3个数组:源字符串数组,替换字符串数组,关键字数组....
前二个数组楼主应该已经是有了,还要声明一个关键字数组,下标与前进二个数组等长,这个数组元素的原则就是字符+不重复的的数字,并保证其在原文章中不存在...
先按源字符串数组中元素的长度排序,这是为了保证长字符串先替换,短字符串后替换,避免重复和遗漏替换....先循环数组将源字符串全部替换成对应的关键字,再循环将关键字替换成要替换字符串....
看起来这个方法效率不是很高,但要高效的方法不简单......一时也想不出
展开全部
百度一下 VB多关键字同时替换,第一个就是我写的,效率比多个replace快,而且不会出现重复替换现象(比如要把a换成b ,b换成a,不管怎么设优先级都是不能直接replace的)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你已经读取字符串数组了吧
用循环体执行replace 即可
即便你是写一个独立函数,也还是要用循环体执行replace
很方便的
用循环体执行replace 即可
即便你是写一个独立函数,也还是要用循环体执行replace
很方便的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就事论事:
"我亲爱的老公看你的"
用"我"或者"你",作为分隔符解析成数组,在数组中替换未作为分隔符的内个字符就可以了吧
"我亲爱的老公看你的"
用"我"或者"你",作为分隔符解析成数组,在数组中替换未作为分隔符的内个字符就可以了吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
决对好用的,可以任意多个字符同时转换
下面直接复制到你的代码里就可以用,我用的过程,直接在你的源字符串内改动
/////////////////////////////////////////////////////////////////////
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
下面直接复制到你的代码里就可以用,我用的过程,直接在你的源字符串内改动
/////////////////////////////////////////////////////////////////////
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询