web-dev-qa-db-fra.com

Comment diviser une chaîne en deux parties avec un caractère donné en Ruby?

Notre application extrait des noms de personnes utilisant Twitter pour se connecter.

Twitter fournit des noms complets dans une seule chaîne.

Exemples

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

Je voudrais diviser la chaîne en seulement deux vars (first et last) en fonction du premier " " (espace) trouvé.

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

Je connais String#split mais je ne sais pas comment diviser une seule fois. La réponse la plus Ruby-Way ™ (élégante) sera acceptée.

61
user633183

String # split prend un deuxième argument, la limite.

str.split(' ', 2)

devrait faire l'affaire.

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

Le deuxième paramètre limite le nombre dans lequel vous souhaitez le diviser.

Vous pouvez également faire:

"Ludwig Van Beethoven".partition(" ")
12
sawa

Le deuxième argument de .split() spécifie le nombre de divisions à faire:

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

Et la sortie:

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

Alternative:

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