-1
this oneと同様の質問です。つまり、部分文字列の開始インデックスと終了インデックスを指定して別の文字列に置き換えますが、インデックスを使用していくつかの部分文字列を置き換えます。インデックスは元の文字列を参照しているため、置換えをすることはできません。だから、私は文字数を数え上げましたが、よりよい方法が必要です。ルビで複数の部分文字列を一度にインデックスで置換する
res = original_string
delta = 0
# to keep things simple, assume replacements just contains objects which have start, end indices and replacements
replacements.each do |r|
old_str = original_str[r.start_offset .. r.end_offset]
new_str = r.replacement
res[r.start_offset + delta .. r.end_offset + delta] = new_str
delta += new_str.size - old_str.size
end