如何以更Ruby的方式从文本文件中创建单词列表?

phi*_*kim 1 ruby syntax split

我想使用Ruby从文本文件中获取单词列表.我发现如何使用正则表达式来解析这里的单词,所以我创建了一个如下脚本:

src = File.open("text.txt")
word_list = []
src.each do |line|
  word_list << line.downcase.split(/[^[:alpha:]]/).delete_if {|x| x == ""}
end
word_list.flatten!.uniq!.sort!
p word_list
Run Code Online (Sandbox Code Playgroud)

以下是示例文本文件text.txt:

TextMate可能是开发Ruby on Rails应用程序的最新热潮,但Vim是永恒的.此插件为Ruby on Rails应用程序开发提供以下功能.

  1. 自动检测包含来自Rails应用程序的文件的缓冲区,并将设置应用于这些缓冲区(并且仅应用于那些缓冲区).您也可以使用自动命令来应用自己的自定义设置.

  2. 非侵入.只应影响Rails应用程序中的文件; 常规Ruby脚本保持不变.即使启用了该插件,如果您不使用其功能,该插件也应该不受影响.

  3. 轻松导航Rails目录结构.gf考虑上下文并了解部分,固定装置等等.有两个命令:A(备用)和:R(相关),用于在文件之间轻松跳转,包括模型到迁移,模板到帮助器和控制器到功能测试等收藏夹.对于更高级的用法,:Rmodel,:Rview,:Rcontroller,以及其他几个命令.

作为一名Ruby新手,我想为这个问题学习更好(更清晰,更简洁,更符合惯例)的解决方案.

感谢您的任何建议和更正.

tok*_*and 6

更惯用的代码是:

word_list = open("text.txt")
  .lines
  .flat_map { |line| line.downcase.split(/[^[:alpha:]]/).reject(&:empty?) }
  .uniq
  .sort
Run Code Online (Sandbox Code Playgroud)