Ruby で文字範囲を置き換えるにはどうすればよいですか?

概要

Ruby を使用して、文字列内の文字範囲を置き換えるにはどうすればよいですか?たとえば、与えられた文字列

hellothere

インデックス位置 2 から 5 までの文字を「#」に置き換えて文字列を生成したい場合

he####here

どうすればいいでしょうか?

解決策

文字列範囲を取得し、最後のインデックスに乗算した新しい文字に最初のインデックスを 1 引いたものを設定することで、それを置き換えることができます。

def replace_in_string(str, replace, start, finish)
  str[start..finish] = replace * (finish + 1 - start)
  str
end

p replace_in_string 'hellothere', '#', 2, 5
# "he####here"