我遇到了一个问题,我需要替换字符串中最后一个出现的单词。
**情况:**我得到一个字符串,其格式如下:
string filePath ="F:/jan11/MFrame/Templates/feb11";
然后我将TnaName
替换为:
filePath = filePath.Replace(TnaName, ""); // feb11 is TnaName
这是可行的,但是当TnaName
与folder name
相同时,我遇到了一个问题,当这种情况发生时,我最终得到了一个如下所示的字符串:
F:/feb11/MFrame/Templates/feb11
现在它已经用feb11
替换了TnaName
的两个匹配项,有没有办法只替换字符串中最后一个匹配项?
注意:feb11
是来自另一进程的TnaName
-这不是问题。
7条答案
按热度按时间kpbpu0081#
下面是替换最后一个
string
的函数source
是要对其执行操作的字符串。find
是要替换的字符串。replace
是要替换它的字符串。uidvcgyl2#
使用
string.LastIndexOf()
查找字符串最后一次出现的索引,然后使用substring查找您的解决方案。iqjalb3h3#
您必须手动执行替换:
lrl1mhuk4#
我不明白为什么不能使用Regex:
用法:
jhdbpxl95#
该解决方案甚至可以更简单地通过一行代码来实现:
在这里我们利用了正则表达式星号运算符的贪婪性,函数的用法如下:
kmpatx3s6#
您可以使用
System.IO
名称空间中的Path
类:r3i60tvu7#
下面的函数拆分模式(要替换的单词)最后出现的字符串。
然后,它用替换字符串(在字符串的后半部分)更改模式。
最后,它将两个字符串的一半再次相互连接起来。