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

本文关键字:模式 第一个 字符串 替换 | 更新日期: 2023-09-27 18:19:52

可能重复:
如何替换.NET中字符串的第一个实例

假设我有字符串:

string s = "Hello world.";

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

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

"HellFoo world."

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

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

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

var regex = new Regex(Regex.Escape("o"));
var newText = regex.Replace("Hello World", "Foo", 1);
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);
    }
}

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

if (s.Contains("o"))
{
    s = s.Remove(s.IndexOf('o')) + "Foo" + s.Substring(s.IndexOf('o') + 1);
}