0

Is there a simple way to overwrite a string, something like the following, or something similar?

s = "123456"
r1 = "abc"
s.loverwrite(r1) # => "abc456"
s.coverwrite(r1) # => "12abc6"  (or "1abc56")
s.roverwrite(r1) # => "123abc"

r2 = "abcdefghi"
s.loverwrite(r2) # => "abcdef"
s.coverwrite(r2) # => "bcdefg"  (or "cdefgh")
s.roverwrite(r2) # => "defghi"
Marc-André Lafortune
  • 78,216
  • 16
  • 166
  • 166
sawa
  • 165,429
  • 45
  • 277
  • 381

1 Answers1

1

Pretty easy with []=:

class String
  def loverwrite(s)
    dup.tap{|result| result[0, s.length] = s[0, length]}
  end
end
Marc-André Lafortune
  • 78,216
  • 16
  • 166
  • 166