Как разбить строку только на две части с заданным символом в Ruby? - PullRequest
61 голосов
/ 10 марта 2011

Наше приложение извлекает имена людей, использующих Twitter для входа в систему.

Twitter предоставляет полные имена в одной строке.

Примеры

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

Я бынравится разбивать строку только на два переменных (first и last) на основе первого найденного " " (пробела).

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

Я знаком с String#split, но не знаю, как разделить только один раз.Самый Ruby-Way ™ (элегантный) ответ будет принят.

Ответы [ 4 ]

142 голосов
/ 10 марта 2011

String # split принимает второй аргумент, ограничение.

str.split(' ', 2)

должно сработать.

12 голосов
/ 10 марта 2011
"Ludwig Van Beethoven".split(' ', 2)

Второй параметр ограничивает число, на которое вы хотите разбить его.

Вы также можете сделать:

"Ludwig Van Beethoven".partition(" ")
8 голосов
/ 10 марта 2011

Второй аргумент .split() указывает, сколько делений нужно сделать:

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

А на выходе:

>> ruby -e "print 'one two three four five'.split(' ', 2)"
>> ["one", "two three four five"]
7 голосов
/ 12 апреля 2013

Альтернатива:

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