Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 仅替换VBA中字符串中最后出现的匹配项_String_Vba_Excel_Replace - Fatal编程技术网

String 仅替换VBA中字符串中最后出现的匹配项

String 仅替换VBA中字符串中最后出现的匹配项,string,vba,excel,replace,String,Vba,Excel,Replace,我有一根这样的绳子 “C://Documents/TestUser/WWW/Help/Files/Move_Help.txt” 并且必须将Move\u Help.txt替换为Move\u Job.txt 我在VBA EXCEL中使用以下代码 str = "C://Documents/TestUser/WWW/Help/Files/Move_Help.txt" rlpStr = Replace(str, 'Help', 'Job') 我越来越 "C://Documents/TestUser/WW

我有一根这样的绳子

“C://Documents/TestUser/WWW/Help/Files/Move_Help.txt”

并且必须将
Move\u Help.txt
替换为
Move\u 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\u Help与Move\u Job匹配(Move\u不是常量。它可以是任何字符串)

下面代码中的技术是否满足您的要求

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

有一种单线解决方案:

rlpStr = StrReverse(Replace(StrReverse(str), StrReverse("Help"),  StrReverse("Job"), , 1))
从技术上讲,它的效率略低于组合
InStr
Replace
,但如果需要,可以在另一个表达式中使用它。此外,我喜欢单线解决方案,只要它们不令人费解。

Str=“C://Documents/TestUser/WWW/Help/Files/Move\u Help.txt”

ValueCrnt=“帮助” ValueNew=“作业”

Pos=InStrRev(Str,ValueCrnt)

如果位置>0,则 Str=Mid(Str,1,位置-1)和替换(Str,ValueCrnt,ValueNew,位置) 如果结束


Wscript.Echo Str

下划线是否一致?如果是这样,您可以使用
rlpStr=Replace(str,“\u Help”,“\u Job”)
。它不是。它可以是任何字符。请添加一些关于代码含义的解释,而不是只发布代码答案。