Хотя приведенные выше примеры работают, я думаю, что лучше разбивать строку на слова, разбивая их на символы, которые не считаются частью какого-либо слова. Для этого я сделал это:
str = "Hello_World I am Learning,Ruby"
str.split(/[^a-zA-Z]/).reject(&:empty?).compact
Это утверждение делает следующее:
- Разбивает строку по символам, которые не находятся в алфавите
- Затем отклоняет все, что является пустой строкой
- И удаляет все нули из массива
Тогда он будет обрабатывать большинство слов. Приведенные выше примеры требуют перечисления всех символов, с которыми вы хотите сопоставить. Гораздо проще указать символы, которые вы не считаете частью слова.