web-dev-qa-db-ja.com

文字列内のパターンの最初の出現を置換

可能性のある複製:
。NETの文字列の最初のインスタンスを置き換える方法

文字列があるとしましょう:

string s = "Hello world.";

wordの最初のoHelloと置き換えてどうすればFooと言うことができますか?

つまり、次のようになりたいと思います。

"HellFoo world."

私はすべてのoを置き換える方法を知っていますが、最初のものだけを置き換えたいです

129
Tono Nam

Regex.Replace のオーバーロードを使用して、置き換える最大回数を指定できると思います...

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

これを行う方法はいくつかありますが、最速の方法は、IndexOfを使用して、置換する文字のインデックス位置を見つけ、置換する前後のテキストを部分文字列にすることです。

11
Mitchel Sellers