Ruby:从字符串中提取单词

我正在尝试从字符串中解析单词并将它们放入数组中。 我尝试过以下的事情:

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

它似乎做了伎俩,但它有点摇摇欲坠(我应该包括更多的特殊字符)。 ruby有更好的方法吗?

可选:我有一个cs课程描述。 我打算从中提取所有单词并将它们放在一个字符串数组中,从生成的数组中删除英语中最常用的单词,然后将其余单词用作用户可用于搜索cs的标记课程。

拆分命令。

  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?)