Ruby: Insert Multiple Values Into String
ruby, string
Solution
Let's have some fun. How about
class String
def splice h
self.each_char.with_index.inject('') do |accum,(c,i)|
accum + h.fetch(i,'') + c
end
end
end
"aaabbbccc".splice(3=>"<strong>", 6=>"</strong>")
=> "aaa<strong>bbb</strong>ccc"
(you can encapsulate this however you want, I just like messing with built-ins because Ruby lets me)
Problem
Suppose we have the string `"aaabbbccc"` and want to use the `String#insert` to convert the string to `"aaa<strong>bbb</strong>ccc"`. Is this the best way to insert multiple values into a Ruby string using `String#insert` or can multiple values simultaneously be added: ``` string = "aaabbbccc" opening_tag = '<strong>' opening_index = 3 closing_tag = '</strong>' closing_index = 6 string.insert(opening_index, opening_tag) closing_index = 6 + opening_tag.length # I don't really like this string.insert(closing_index, closing_tag) ``` Is there a way to simultaneously insert multiple substrings into a Ruby string so the closing tag does not need to be offset by the length of the first substring that is added? I would like something like this one liner: ``` string.insert(3 => '<strong>', 6 => '</strong>') # => "aaa<strong>bbb</strong>ccc" ```