Ruby: Split string at character, counting from the right side
String#rpartition
does just that:
name, match, suffix = name.rpartition('.')
It was introduced in Ruby 1.8.7, so if running an earlier version you can use require 'backports/1.8.7/string/rpartition'
for that to work.
Put on the thinking cap for a while and came up with this regexp:
"what.to.do.now".split(/\.([^.]*)$/)=> ["what.to.do", "now"]
Or in human terms "split at dot, not followed by another dot, at end of string". Works nicely also with dotless strings and sequences of dots:
"whattodonow".split(/\.([^.]*)$/)=> ["whattodonow"]"what.to.do...now".split(/\.([^.]*)$/)=> ["what.to.do..", "now"]