vbs replace 替换第二个匹配字符

比如str="aaabaaabaaa"我希望把第二个b替换成别的字符,第二个b的位置不确定,请问有什麼好办法???... 比如
str="aaabaaabaaa"
我希望把第二个b替换成别的字符,第二个b的位置不确定,请问有什麼好办法???
展开
 我来答
xiaomingtt
2013-09-25 · TA获得超过1752个赞
知道小有建树答主
回答量:917
采纳率:86%
帮助的人:690万
展开全部
s = "aaabaaabaaa"     '原始字符串
p = "b"     '要替换的字符串
r = "$"    '替换什么字符串
l = len(p)   '计算要替换的字符串长度 
m = 0    '初始化计数变量
n = 0    '初始化位置变量
for i = 1 to len(s)   '遍历原始字符串
if mid(s,i,l) = p then    '查找要替换的字符串
m = m + 1    '计数加1
if m = 2 then     '要替换第二个被查找到的字符串
n = i    '将查找到的第二个字符串的位置赋值给n
end if
end if
next
ss =  left(s,n-1) & r & right(s,len(s)-n-l+1)   '最终字符串组成为n之前的字符+替换后的字符+第二处要替换的字符串后面的内容
msgbox ss

 

s = "aaabaaabaaa"     '原始字符串

p = "aba"     '要替换的字符串

r = "$@#$$&&"    '替换什么字符串

l = len(p)   '计算要替换的字符串长度 

m = 0    '初始化计数变量

n = 0    '初始化位置变量

for i = 1 to len(s)   '遍历原始字符串

if mid(s,i,l) = p then    '查找要替换的字符串

m = m + 1    '计数加1

if m = 2 then     '要替换第二个被查找到的字符串

n = i    '将查找到的第二个字符串的位置赋值给n

end if

end if

next

ss =  left(s,n-1) & r & right(s,len(s)-n-l+1)   '最终字符串组成为n之前的字符+替换后的字符+第二处要替换的字符串后面的内容

msgbox ss



正则表达式?这种小问题没有必要吧!如果我想替换第三个还得修改正则表达式,我觉得有一定难度,我的脚本2改成3就好,一看就明白

鄙人_焉哉乎也
2013-09-25 · TA获得超过167个赞
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:130万
展开全部
这种问题用正则是更好的选择,代码如下:
Option Explicit
Dim strSrc, strPlc, strDst
strSrc = "aaabaaaabaaaaabaa" '源字符串
strPlc = "b" '需要从源字符串中替换掉的字符
strDst = "Z" '替换后的目标字符
Dim objRex
Set objRex = New RegExp
With objRex
.Pattern = "^(.+?" & strPlc & ".+?)" & strPlc & "(.*)$"
.IgnoreCase = True '忽略大小写,如果改为 false 则区分大小写
strSrc = .Replace(strSrc, "$1" & strDst & "$2")
End With
WScript.Echo strSrc
Set objRex = Nothing
追问
谢谢,有用!可是大神,太高级了,看不懂哎
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式