On Sun, Jan 14, 2007 at 01:09:49PM +0900, Rob Sanheim wrote:
> On 1/13/07, James Edward Gray II <james / grayproductions.net> wrote:
> >On Jan 13, 2007, at 9:43 PM, Rob Sanheim wrote:
> >
> >> I figure that I must be missing something really obvious with this
> >> question.  But here goes:
> >>
> >> I want to know if a string matches a regular expression.  I don't care
> >> where the match begins, I don't want a matchdata object, I don't want
> >> to check for nil, I just want a boolean indicating if a string matches
> >> a regexp.  And I want this to be one method call.  From what I can
> >> tell, this is the closest I can get:
> >>
> >> ("string" =~ reg) >= 0 # ugly
> >
> >Just drop the noise:
> >
> >"string" =~ reg # => int results are +true+ and nil is +false+
> >
> >Hope that helps.
> >
> 
> True...but here is a cleaned up version of the place where I tried to do 
> that:
> 
> def valid_query?
> # query is a string accessor
>    if query_is_plain_text?
>      is_valid = valid_query_length? && (query =~ regex)
>    else
>      is_valid = query_is_url?
>    end
>    is_valid
>  end
> 
> So of course, when it was both a valid query and had a valid length,
> it would return zero because it matched the start of the regexp.  The
> caller of the method wanted true or false only, not zero.
The caller is poorly written then :)
To work around this:
  
  !!is_valid # !! is like the to boolean operator ;)
end