From: Robert Klemme Date: 2012-12-28T20:36:02+09:00 Subject: Re: numeric? On Fri, Dec 28, 2012 at 5:41 AM, Damián M. González wrote: >> In these cases, I just double convert i.e. >> >> irb(main):016:0> buffer = 'fred' >> => "fred" >> irb(main):017:0> buffer.to_i.to_s == buffer >> => false > > Have to say that that's very cleaver. Very good solution. Sorry to disagree. There are more clever solutions: Use an Integer and deal with the exception. 1. immediately irb(main):001:0> buffer = 'fred' => "fred" irb(main):002:0> i = Integer(buffer) ArgumentError: invalid value for Integer(): "fred" from (irb):2:in `Integer' from (irb):2 from /usr/bin/irb:12:in `
' irb(main):003:0> begin; i = Integer(buffer); puts "int"; rescue ArgumentError; puts "no int"; end no int => nil 2. by converting the value to nil if it is not a number irb(main):004:0> j = Integer(buffer) rescue nil => nil irb(main):005:0> if j; puts "int"; else puts "no int"; end no int => nil Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/