class Object def commify(sep=',') if self.class == Fixnum || self.class == Float numstr = self.to_s else numstr = self.dup end numstr.gsub(/(\d)(?=\d{3}+(?:\.|$))(\d{3}\..*)?/, "\\1#{sep}\\2") end end # 12345.commify --> "12,345" # "12345".commify --> "12,345" # 45623.commify('_') --> 45_623