Подтвердить что ты не робот

Ruby: Извлечение слов из строки

Я пытаюсь разбирать слова из строки и помещать их в массив. Я пробовал следующее:

@string1 = "oriented design, decomposition, encapsulation, and testing. Uses "
puts @string1.scan(/\s([^\,\.\s]*)/)

Кажется, это трюк, но он немного шаткий (например, я должен включать более специальные символы). Есть ли лучший способ сделать это в рубине?

Дополнительно: у меня есть описание курса cs. Я намерен извлечь из него все слова и поместить их в строковый массив, удалить наиболее распространенное слово на английском языке из созданного массива, а затем использовать остальные слова как теги, которые пользователи могут использовать для поиска cs курсы.

4b9b3361

Ответ 1

Команда split.

   words = @string1.split(/\W+/)

разделит строку на массив на основе регулярного выражения. \W означает любой символ "не-слово", а "+" означает объединение нескольких разделителей.

Ответ 2

Ну, вы можете разбить строку на пробелы, если ваш разделитель интереса

@string1.split(' ')

Или разделение на границах слов

\W  # Any non-word character

\b  # Any word boundary character

Или при не-словах

\s  # Any whitespace character

Подсказка: попробуйте проверить каждый из них на http://rubular.com

И обратите внимание, что ruby ​​1.9 имеет некоторые отличия от 1,8

Ответ 3

Для меня лучше всего разделить предложения:

line.split(/[^[[:word:]]]+/)

Даже многоязычные слова и знаки препинания отлично работают:

line = 'English words, Polski Żurek!!! crème fraîche...'
line.split(/[^[[:word:]]]+/)
=> ["English", "words", "Polski", "Żurek", "crème", "fraîche"] 

Ответ 4

Для Rails вы можете использовать что-то вроде этого:

@string1.split(/\s/).delete_if(&:blank?)