vbs replace 替换第二个匹配字符
比如str="aaabaaabaaa"我希望把第二个b替换成别的字符,第二个b的位置不确定,请问有什麼好办法???...
比如
str="aaabaaabaaa"
我希望把第二个b替换成别的字符,第二个b的位置不确定,请问有什麼好办法??? 展开
str="aaabaaabaaa"
我希望把第二个b替换成别的字符,第二个b的位置不确定,请问有什麼好办法??? 展开
2个回答
展开全部
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就好,一看就明白
展开全部
这种问题用正则是更好的选择,代码如下:
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
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
追问
谢谢,有用!可是大神,太高级了,看不懂哎
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询