将文本文件分成单独的单词并以Ruby

时间:2016-03-21 20:31:25

标签: arrays ruby

我试图读取一个文本文件,然后将它的单个单词存储在一个数组中。但我找不到根据文字分割它的方法。

text_file = []

File.open(file, "r") do |f|
  f.lines.each do |line|
    text_file << line.split.map(&:to_s)
  end
end

上面的方法创建了一个数组数组,它​​将所有单词存储在一个数组中的一行中,依此类推。

数组text_file是否可以容纳所有单词的单个数组?

3 个答案:

答案 0 :(得分:2)

是。要么:

text_file.push(*line.split.map(&:to_s))

或:

text_file.concat(line.split.map(&:to_s))

答案 1 :(得分:1)

如果你想要所有的单词,唯一的,排序的:

text_file = [ ]

File.open(file, "r") do |f|
  f.each_line do |line|
    text_file += line.split
  end
end

text_file.uniq!
text_file.sort!

这不是最优化的实现,但应该可行。为了使其适应更真实的情况,您可能需要使用String#scan来提取更具体的单词,而不是像标点符号或连字符那样被绊倒。

答案 2 :(得分:0)

修改你的代码,这将解决问题:

text_file = []

File.open('document.rb', "r") do |f|
  f.each_line do |line|
    arr = line.split(' ')
    arr.each do |word|
      text_file << word
    end  
  end
end