指定された文字列の最初の出現箇所を置き換えたい。
これを .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");