From: James Edward Gray II Date: 2006-03-01T01:59:37+09:00 Subject: Re: Formatting to "Thousands" On Feb 28, 2006, at 10:53 AM, Jeffrey Schwab wrote: > James Edward Gray II wrote: > >> def commify( number ) >> number.to_s.reverse.gsub!(/(\d\d\d)(?=\d)(?!\d*\.)/, '\1,').reverse >> end > > That's nice, except that gsub! returns nil if no substitutions are > performed, e.g. if the number has fewer than 4 digits. This can > result in an exception like: > > main.rb:3:in `commify': > undefined method `reverse' for nil:NilClass(NoMethodError) > > Of course, you could just break the chain across multiple lines: > > def commify(number) > s = number.to_s > s.reverse! > s.gsub!(/(\d\d\d)(?=\d)(?!\d*\.)/, '\1,') > s.reverse! > end Good catch. I originally had it in multiple lines and I forgot to remove the ! when I shortened it for this post. Thanks. James Edward Gray II