首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >替换字符串中最后一次出现的单词- C#

替换字符串中最后一次出现的单词- C#
EN

Stack Overflow用户
提问于 2013-02-12 13:24:15
回答 8查看 73K关注 0票数 95

我有一个问题,我需要替换字符串中最后一个出现的单词。

情况:我得到了一个字符串,其格式如下:

代码语言:javascript
复制
string filePath ="F:/jan11/MFrame/Templates/feb11";

然后,我像这样替换TnaName

代码语言:javascript
复制
filePath = filePath.Replace(TnaName, ""); // feb11 is TnaName

这是可行的,但当TnaName与我的folder name相同时,我会遇到一个问题。当发生这种情况时,我最终得到一个如下所示的字符串:

代码语言:javascript
复制
F:/feb11/MFrame/Templates/feb11

现在它已经用feb11替换了TnaName的两个实例。有没有一种方法可以只替换字符串中最后一个出现的单词?

注意:feb11 TnaName feb11 is 来自另一个进程-这不是问题。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-02-12 13:33:17

下面是替换字符串最后一个匹配项的函数

代码语言:javascript
复制
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是要用来替换它的字符串。
票数 200
EN

Stack Overflow用户

发布于 2013-02-12 13:28:58

使用string.LastIndexOf()查找字符串最后一次出现的索引,然后使用子字符串查找解决方案。

票数 12
EN

Stack Overflow用户

发布于 2013-02-12 13:33:59

您必须手动执行替换:

代码语言:javascript
复制
int i = filePath.LastIndexOf(TnaName);
if (i >= 0)
    filePath = filePath.Substring(0, i) + filePath.Substring(i + TnaName.Length);
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14825949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档