syb*_*ohy 31 ruby regex parsing ruby-on-rails
我正在尝试解析字符串中的单词并将它们放入数组中.我尝试过以下的事情:
@string1 = "oriented design, decomposition, encapsulation, and testing. Uses "
puts @string1.scan(/\s([^\,\.\s]*)/)
Run Code Online (Sandbox Code Playgroud)
它似乎做了伎俩,但它有点摇摇欲坠(我应该包括更多的特殊字符).在红宝石中有更好的方法吗?
可选:我有一个cs课程描述.我打算从中提取所有单词并将它们放在一个字符串数组中,从生成的数组中删除英语中最常用的单词,然后将其余单词用作用户可用于搜索cs的标记课程.
Dav*_*hme 59
拆分命令.
words = @string1.split(/\W+/)
Run Code Online (Sandbox Code Playgroud)
将基于正则表达式将字符串拆分为数组.\ W表示任何"非单词"字符,"+"表示组合多个分隔符.
BF4*_*BF4 13
好吧,如果这是您感兴趣的分隔符,您可以在空格上拆分字符串
@string1.split(' ')
Run Code Online (Sandbox Code Playgroud)
或拆分字边界
\W # Any non-word character
\b # Any word boundary character
Run Code Online (Sandbox Code Playgroud)
或者非言语
\s # Any whitespace character
Run Code Online (Sandbox Code Playgroud)
提示:尝试在http://rubular.com上测试其中的每一个
请注意,ruby 1.9与1.8有一些差异
laz*_*per 13
对我来说,最好的分裂句子是:
line.split(/[^[[:word:]]]+/)
Run Code Online (Sandbox Code Playgroud)
即使多语言单词和标点符号完美地工作:
line = 'English words, Polski ?urek!!! crème fraîche...'
line.split(/[^[[:word:]]]+/)
=> ["English", "words", "Polski", "?urek", "crème", "fraîche"]
Run Code Online (Sandbox Code Playgroud)