.NET で文字列の最初のインスタンスを置き換えるにはどうすればいいですか? 質問する

.NET で文字列の最初のインスタンスを置き換えるにはどうすればいいですか? 質問する

指定された文字列の最初の出現箇所を置き換えたい。

これを .NET で実現するにはどうすればよいでしょうか?

ベストアンサー1

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

例:

string str = "The brown brown fox jumps over the lazy dog";

str = ReplaceFirst(str, "brown", "quick");

編集: @itsmatt として言及されたまた、Regex.Replace(String, String, Int32) もあり、これも同じことができますが、私のメソッドが 1 回の検索と 3 回の文字列連結を行うのに対し、フル機能のパーサーを利用するため、実行時のコストが高くなる可能性があります。

編集2: これが一般的なタスクである場合は、メソッドを拡張メソッドにすることをお勧めします。

public static class StringExtension
{
  public static string ReplaceFirst(this string text, string search, string replace)
  {
     // ...same as above...
  }
}

上記の例を使用すると、次のように記述できるようになります。

str = str.ReplaceFirst("brown", "quick");

おすすめ記事