tags:

views:

188

answers:

4

I want to see if a string has any white space in it. What's the most effective way of doing this in ruby?

Thanks

+5  A: 
some_string.match(/\s/)
floyd
+1  A: 

you can use index

"mystring".index(/\s/)
ghostdog74
Isn't a tab whitespace?
Eli
+3  A: 

It is usually done like this:

str =~ /\s/

You can read about regular expressions here.

mckeed
+10  A: 

If by "white space" you mean in the Regular Expression sense, which is any of space character, tab, newline, carriage return or (I think) form-feed, then any of the answers provided will work:

s.match(/\s/)
s.index(/\s/)
s =~ /\s/

or even (not previously mentioned)

s[/\s/]

If you're only interested in checking for a space character, then try your preference of

s.match(" ")
s.index(" ")
s =~ / /
s[" "]

From irb (Ruby 1.8.6):

s = "a b"
puts s.match(/\s/) ? "yes" : "no" #-> yes
puts s.index(/\s/) ? "yes" : "no" #-> yes
puts s =~ /\s/ ? "yes" : "no" #-> yes
puts s[/\s/] ? "yes" : "no" #-> yes

s = "abc"
puts s.match(/\s/) ? "yes" : "no" #-> no
puts s.index(/\s/) ? "yes" : "no" #-> no
puts s =~ /\s/ ? "yes" : "no" #-> no
puts s[/\s/] ? "yes" : "no" #-> no
Mike Woodhouse