首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >替换字符串中出现的第一个模式

替换字符串中出现的第一个模式
EN

Stack Overflow用户
提问于 2012-01-11 03:29:43
回答 3查看 178K关注 0票数 190

可能重复:

How do I replace the of a string in .NET?

假设我有一个字符串:

代码语言:javascript
复制
string s = "Hello world.";

如何将单词Hello中的第一个o替换为Foo

换句话说,我想以:

代码语言:javascript
复制
"HellFoo world."

我知道如何替换所有的o,但我只想替换第一个

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-11 03:34:02

我认为您可以使用Regex.Replace的重载来指定要替换的最大次数...

代码语言:javascript
复制
var regex = new Regex(Regex.Escape("o"));
var newText = regex.Replace("Hello World", "Foo", 1);
票数 249
EN

Stack Overflow用户

发布于 2012-01-11 03:36:19

代码语言:javascript
复制
public string ReplaceFirst(string text, string search, string replace)
{
  int pos = text.IndexOf(search);
  if (pos < 0)
  {
    return text;
  }
  return text.Substring(0, pos) + replace + text.Substring(pos + search.Length);
}

下面是一个扩展方法,同样适用于每个VoidKing请求

代码语言:javascript
复制
public static class StringExtensionMethods
{
    public static string ReplaceFirst(this string text, string search, string replace)
    {
      int pos = text.IndexOf(search);
      if (pos < 0)
      {
        return text;
      }
      return text.Substring(0, pos) + replace + text.Substring(pos + search.Length);
    }
}
票数 246
EN

Stack Overflow用户

发布于 2012-01-11 03:32:27

有很多方法可以做到这一点,但最快的方法可能是使用IndexOf查找要替换的字母的索引位置,然后在要替换的字母之前和之后提取文本的子串。

代码语言:javascript
复制
if (s.Contains("o"))
{
    s = s.Remove(s.IndexOf('o')) + "Foo" + s.Substring(s.IndexOf('o') + 1);
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8809354

复制
相关文章

相似问题

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