2015-07-13 12 views
-1

В C++ я могу добавить нулевой символ в конце, чтобы различать слова. Но я не умею в Ruby Я не хочу использовать метод сплайсинга. Вот как я продвигаюсь вперед.Разделить предложение на слова, используя только цикл while

i = 0 
    split_array = [] 
    while (i<sentence.length) 
     puts (sentence.length) 
     if (i+1 == " ") 
+1

Вы должны использовать 'while'? Существует гораздо более простой способ: 'words = sentence.split (/ \ W + /)' будет делать все (с некоторыми оговорками, о которых вы должны знать) – jkeuhlen

+0

Да, я хотел. В основном в C++ я могу добавить нулевой символ в конце, чтобы различать слова. Но я не умею в Ruby – user3040171

+1

В конце чего? Почему вам нужно различать слова? массив 'words' в моем примере имеет слово при каждом индексе – jkeuhlen

ответ

0

Другой способ (без учета знаков препинания и корпус):

sentence = "the quick brown dog\njumped over the lazy fox" 

start_ndx = sentence.index(/\w/) 
return [] if start_ndx.nil? 
words = [] 
while start_ndx 
    end_ndx = sentence.index(/\w\b/, start_ndx) 
    words << sentence[start_ndx..end_ndx] 
    start_ndx = sentence.index(/\w/, end_ndx+1) 
end 
words 
    #=> ["the", "quick", "brown", "dog", "jumped", "over", "the", "lazy", "fox"] 
Смежные вопросы