Ответ 1
Команда split.
words = @string1.split(/\W+/)
разделит строку на массив на основе регулярного выражения. \W означает любой символ "не-слово", а "+" означает объединение нескольких разделителей.
Я пытаюсь разбирать слова из строки и помещать их в массив. Я пробовал следующее:
@string1 = "oriented design, decomposition, encapsulation, and testing. Uses "
puts @string1.scan(/\s([^\,\.\s]*)/)
Кажется, это трюк, но он немного шаткий (например, я должен включать более специальные символы). Есть ли лучший способ сделать это в рубине?
Дополнительно: у меня есть описание курса cs. Я намерен извлечь из него все слова и поместить их в строковый массив, удалить наиболее распространенное слово на английском языке из созданного массива, а затем использовать остальные слова как теги, которые пользователи могут использовать для поиска cs курсы.
Команда split.
words = @string1.split(/\W+/)
разделит строку на массив на основе регулярного выражения. \W означает любой символ "не-слово", а "+" означает объединение нескольких разделителей.
Ну, вы можете разбить строку на пробелы, если ваш разделитель интереса
@string1.split(' ')
Или разделение на границах слов
\W # Any non-word character
\b # Any word boundary character
Или при не-словах
\s # Any whitespace character
Подсказка: попробуйте проверить каждый из них на http://rubular.com
И обратите внимание, что ruby 1.9 имеет некоторые отличия от 1,8
Для меня лучше всего разделить предложения:
line.split(/[^[[:word:]]]+/)
Даже многоязычные слова и знаки препинания отлично работают:
line = 'English words, Polski Żurek!!! crème fraîche...'
line.split(/[^[[:word:]]]+/)
=> ["English", "words", "Polski", "Żurek", "crème", "fraîche"]
Для Rails вы можете использовать что-то вроде этого:
@string1.split(/\s/).delete_if(&:blank?)