Es ist eine ähnliche Frage zu this one, d. H. Einen Start- und End-Index eines Teilstrings, ersetzen Sie es durch einen anderen String, aber ich möchte mehrere Teilstrings durch Indizes ersetzen. Ich kann nicht einfach Ketten ersetzen, da sich die Indizes auf die ursprüngliche Zeichenfolge beziehen. Also habe ich die Charaktere gezählt, aber es muss einen besseren Weg geben.Ersetzen Sie mehrere Teilstrings durch Indizes auf einmal in Ruby
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