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

时间:2012-01-10 19:29:43

标签: c# regex

  

可能重复:
  How do I replace the first instance of a string in .NET?

我们说我有字符串:

string s = "Hello world.";

我怎样才能替换单词o中的第一个Hello,让我们说Foo

换句话说,我想最终得到:

"HellFoo world."

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

3 个答案:

答案 0 :(得分:192)

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

var regex = new Regex(Regex.Escape("o"));
var newText = regex.Replace("Hello World", "Foo", 1);

答案 1 :(得分:162)

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请求

运行
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);
    }
}

答案 2 :(得分:11)

您可以通过多种方式执行此操作,但最快的方法可能是使用IndexOf查找要替换的字母的索引位置,然后在要替换的内容之前和之后对文本进行子字符串输出。