Как разбить строку на массив из нескольких слов?

У меня есть строка, которую я использую .split('') для разделения строки на массив слов. Могу ли я использовать аналогичный метод для разделения строки на массив из 2 слов вместо этого?

Возвращает массив, в котором каждый элемент является одним словом:

words = string.split(' ')

Я хочу вернуть массив, в котором каждый элемент имеет 2 слова.

Ответ 1

str = 'one two three four five six seven'
str.split.each_slice(2).map{|a|a.join ' '}
=> ["one two", "three four", "five six", "seven"]

Это также обрабатывает случай нечетного числа слов.

Ответ 2

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

string= 'one1! [email protected] three3# four4$ five5% six6^ sev'
string.scan(/\S+ ?\S*/)
# => ["one1! [email protected]", "three3# four4$", "five5% six6^", "sev"]

Ответ 3

Что-то вроде этого должно работать:

string.scan(/\w+ \w+/)

Ответ 4

Ruby scan полезен для этого:

'a b c'.scan(/\w+(?:\s+\w+)?/)
=> ["a b", "c"]

'a b c d e f g'.scan(/\w+(?:\s+\w+)?/)
=> ["a b", "c d", "e f", "g"]

Ответ 5

Это все, что я должен был сделать:

def first_word
    chat = "I love Ruby"
    chat = chat.split(" ")
    chat[0]
end