我有一个问题,我需要替换字符串中最后一个出现的单词。
情况:我得到了一个字符串,其格式如下:
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
feb11
is 来自另一个进程-这不是问题。
发布于 2013-02-12 13:33:17
下面是替换字符串最后一个匹配项的函数
public static string ReplaceLastOccurrence(string Source, string Find, string Replace)
{
int place = Source.LastIndexOf(Find);
if(place == -1)
return Source;
string result = Source.Remove(place, Find.Length).Insert(place, Replace);
return result;
}
Source
是要对其执行操作的字符串,operation.Find
是要替换的字符串。Replace
是要用来替换它的字符串。发布于 2013-02-12 13:28:58
使用string.LastIndexOf()
查找字符串最后一次出现的索引,然后使用子字符串查找解决方案。
发布于 2013-02-12 13:33:59
您必须手动执行替换:
int i = filePath.LastIndexOf(TnaName);
if (i >= 0)
filePath = filePath.Substring(0, i) + filePath.Substring(i + TnaName.Length);
https://stackoverflow.com/questions/14825949
复制相似问题