How to split string into only two parts with a given character in Ruby?

Our application is mining names from people using Twitter to login.

Twitter is providing full names in a single string.

Examples

1. "Froederick Frankenstien"
2. "Ludwig Van Beethoven"
3. "Anne Frank"

I'd like to split the string into only two vars (first and last) based on the first " " (space) found.

Example    First Name    Last Name 
1          Froederick    Frankenstein
2          Ludwig        Van Beethoven
3          Anne          Frank

I'm familiar with String#split but I'm not sure how to only split once. The most Ruby-Way™ (elegant) answer will be accepted.


Solution 1:

String#split takes a second argument, the limit.

str.split(' ', 2)

should do the trick.

Solution 2:

"Ludwig Van Beethoven".split(' ', 2)

The second parameter limits the number you want to split it into.

You can also do:

"Ludwig Van Beethoven".partition(" ")

Solution 3:

The second argument of .split() specifies how many splits to do:

'one two three four five'.split(' ', 2)

And the output:

>> ruby -e "print 'one two three four five'.split(' ', 2)"
>> ["one", "two three four five"]

Solution 4:

Alternative:

    first= s.match(" ").pre_match
    rest = s.match(" ").post_match