/\d+(\.\d+)?/ =~ some_number

Doesn't do what you need? Is there an obvious edge case I'm missing? A
number is one or more digits, optionally followed by a . and one or
more digits.

=~ will give you nil if it doesn't match, or the index of the match if
it does (which you can just use as non false).

On Fri, Jan 22, 2010 at 11:35 AM, Glenn Little <lit...@cs.ucsd.edu> wrote:
> I'm looking for a simple way to check if a string really represents
> a number in ruby/rails.  I figured there would be a String.is_numeric?
> but haven't found anything.
>
> I've seen suggestions for roll-your-own functions the best of which
> appears to be something like (verbosely):
>
>  def represents_number?(s)
>   begin
>     if Float(s)
>       return true
>     else
>       return false
>     end
>   rescue
>     return false
>   end
>  end
>
> This relies on the fact that Float() throws an exception if it
> gets a string that it can't convert.
>
> The issue I have with this is that it feels a little hinky in
> that it's relying on Float throwing an exception.  Maybe that's
> okay, but it feels just a shade side-effecty.
>
> The other option is to craft a regexp, which would be tough
> if I *really* wanted to be thorough.
>
> Am I missing any simpler options?
>
> Thanks...
>
>        -glenn
>
>
> --
> SD Ruby mailing list
> sdruby@googlegroups.com
> http://groups.google.com/group/sdruby



-- 
Kevin Clark
http://glu.ttono.us

-- 
SD Ruby mailing list
sdruby@googlegroups.com
http://groups.google.com/group/sdruby

Reply via email to