我有一个像这样的字符串
" C://Documents/TestUser/WWW/Help/Files/Move_Help.txt"
并且必须将Move_Help.txt
替换为Move_Job.txt
我在VBA EXCEL中使用以下代码
str = "C://Documents/TestUser/WWW/Help/Files/Move_Help.txt"
rlpStr = Replace(str, 'Help', 'Job')
我正在
"C://Documents/TestUser/WWW/Job/Files/Move_Job.txt"
预期
"C://Documents/TestUser/WWW/Help/Files/Move_Job.txt"
你能帮忙吗?
仅供参考:我无法将Move_Help与Move_Job匹配(Move_不是常量。它可以是任何字符串)
答案 0 :(得分:13)
这是一个单线解决方案:
rlpStr = StrReverse(Replace(StrReverse(str), StrReverse("Help"), StrReverse("Job"), , 1))
从技术上讲,它比组合InStr
和Replace
的效率略低,但如果需要,可以在另一个表达式中使用。此外,我喜欢单线解决方案,只要它们不是不可理解的。
答案 1 :(得分:5)
以下代码中的技术是否符合您的要求?
Str的初始值是:
C://Documents/TestUser/WWW/Help/Files/Move_Help.txt
最终值为:
C://Documents/TestUser/WWW/Help/Files/Move_Job.txt
代码使用InStrRev
找到ValueCrnt
的最后一个匹配项(如果有),如果存在ValueCrnt
,则用ValueNew
替换最后一次出现。
Option Explicit
Sub Demo()
Dim Pos As Long
Dim Str As String
Dim ValueCrnt As String
Dim ValueNew As String
Str = "C://Documents/TestUser/WWW/Help/Files/Move_Help.txt"
ValueCrnt = "Help"
ValueNew = "Job"
Pos = InStrRev(Str, ValueCrnt)
If Pos > 0 Then
Str = Mid(Str, 1, Pos - 1) & Replace(Str, ValueCrnt, ValueNew, Pos)
End If
Debug.Print Str
End Sub
答案 2 :(得分:0)
Str =“ C://Documents/TestUser/WWW/Help/Files/Move_Help.txt”
ValueCrnt =“帮助” ValueNew =“工作”
Pos = InStrRev(Str,ValueCrnt)
如果Pos> 0然后 Str = Mid(Str,1,Pos-1)&Replace(Str,ValueCrnt,ValueNew,Pos) 如果结束
Wscript.Echo Str